RetroArch/pkg/emscripten/libretro-thread/libretro.css

434 lines
7.8 KiB
CSS

/**
* RetroArch Web Player
*
* This provides the basic styling for the RetroArch web player.
*/
@import url("https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400..700&display=swap");
@keyframes loaded {
from {
opacity: 0.2;
}
to {
opacity: 1;
}
}
@keyframes loading {
from {
opacity: 0.2;
}
to {
opacity: 0.35;
}
}
/* real ozone */
@keyframes hover {
from {
box-shadow: 0px 0px 1px 1px #198AC6, inset 0px 0px 1px 1px #198AC6;
}
to {
box-shadow: 0px 0px 1px 1px #89F1F2, inset 0px 0px 1px 1px #89F1F2;
}
}
@keyframes hover-danger {
from {
box-shadow: 0px 0px 1px 1px #C7261A, inset 0px 0px 1px 1px #C7261A;
}
to {
box-shadow: 0px 0px 1px 1px #F75C4A, inset 0px 0px 1px 1px #F75C4A;
}
}
body {
margin: 0px;
background-color: black;
font-family: "Inter", sans-serif;
font-variant-ligatures: no-contextual;
scrollbar-color: #505050 #2e2e2e;
--menuheight: 65px;
--menumarginy: 14px;
--menumarginx: 7px;
--menupaddingy: 8px;
--menupaddingx: 16px;
--submarginy: 0px;
--submarginx: 0px;
--subpaddingy: 5px;
--subpaddingx: 8px;
--rounding: 1px;
--barcolor: #2e2e2e;
--subcolor: #282828;
--barbuttoncolor: var(--barcolor);
--barbuttonhovercolor: #212227;
--barbuttonoutline: 1px;
--barbuttonoutlinecolor: #51514f;
--barfontcolor: #ffffff;
--bardisabledfontcolor: #b6b6b6;
/* do not modify */
--actualmenuheight: var(--menuheight);
--menubuttonbordery: calc(var(--menuheight) - calc(var(--menumarginy) * 2));
--menubuttoncontenty: calc(var(--menubuttonbordery) - calc(var(--menupaddingy) * 2));
}
canvas.webplayer, #webplayer-preview {
display: block;
position: fixed;
top: var(--actualmenuheight);
width: 100vw;
height: calc(100vh - var(--actualmenuheight));
outline: none;
z-index: 4;
}
#webplayer-preview {
background-image: url(media/canvas.png);
background-size: contain;
background-repeat: no-repeat;
background-position: center;
cursor: wait;
opacity: 0.2;
transition: opacity 0.8s;
animation: loading 0.8s ease-in-out infinite alternate;
z-index: 5;
}
#webplayer-preview.loaded {
cursor: pointer;
opacity: 1;
animation: loaded 0.8s ease-in-out;
}
/**
* Hack to make emscripten stop messing with the canvas size while in fullscreen.
* Foiled again!
*/
:fullscreen canvas.webplayer {
top: 0px;
min-width: 100vw;
max-width: 100vw;
min-height: 100vh;
max-height: 100vh;
}
a {
color: #3ec3f0;
}
/* menu bar */
#navbar {
position: fixed;
width: 100vw;
height: var(--actualmenuheight);
background-color: var(--barcolor);
color: var(--barfontcolor);
z-index: 20;
user-select: none;
}
#menu {
float: left;
list-style: none;
margin: 0px;
width: max-content;
height: 100%;
padding: 0px var(--menumarginx);
}
.progressContainer {
width: 100%;
float: left;
}
.progressBar {
width: 100%;
height: 0px;
--progressbarpercent: 0%;
--progressbarcolor: #1fb01a;
}
.progressBar::after {
content: "";
display: block;
width: var(--progressbarpercent);
height: 100%;
transition: width 0.2s ease-out;
background-color: var(--progressbarcolor);
}
.progressText {
padding: 0px 4px;
}
#menu li {
white-space: nowrap;
max-width: 500px;
position: relative;
outline: none;
}
#menu>li {
margin: var(--menumarginy) var(--menumarginx);
display: inline-block;
float: left;
height: var(--menubuttoncontenty);
line-height: var(--menubuttoncontenty);
border-radius: var(--rounding);
background-color: var(--barbuttoncolor);
outline: var(--barbuttonoutline) solid var(--barbuttonoutlinecolor);
font-size: 12pt;
}
.dropdown-parent {
height: var(--menubuttonbordery) !important;
}
.dropdown-parent>label {
display: inline-block;
}
#menu>li:not(.dropdown-parent),
.dropdown-parent>label {
padding: var(--menupaddingy) var(--menupaddingx);
}
label {
cursor: inherit;
}
.ozone-list {
background-color: var(--subcolor);
width: max-content;
padding: 1px;
}
.dropdown-child {
position: absolute;
overflow: hidden auto;
max-height: calc(100vh - var(--actualmenuheight));
display: none;
top: calc(100% + 1px);
left: 0px;
border-radius: var(--rounding);
box-sizing: border-box;
z-index: 1;
}
#fileManagerPanel {
margin: auto;
margin-top: 10px;
}
.ozone-list>* {
display: block;
border-radius: var(--rounding);
text-decoration: none;
color: inherit;
margin: var(--submarginy) var(--submarginx);
padding: 8px 12px;
line-height: initial;
font-size: 10pt;
outline: none;
user-select: none;
}
.dropdown-child>* {
padding: var(--subpaddingy) var(--subpaddingx);
}
.ozone-list>*:not(:last-child) {
box-shadow: 0px 2px 0px -1px var(--barbuttonoutlinecolor);
}
#menu>li:not(.disabled),
.ozone-list>*:not(.disabled) {
cursor: pointer;
}
#menu .disabled,
.ozone-list .disabled {
cursor: not-allowed !important;
color: var(--bardisabledfontcolor);
}
#menu>li:not(.disabled):not(.dropdown-parent:has(.dropdown-child:hover)):hover,
.ozone-list>*:hover,
.ozone-list>*:focus,
#menuhider:not(:checked) ~ .menuhiderlabel:hover {
background-color: var(--barbuttonhovercolor);
outline: none;
animation: hover 0.5s ease-in-out infinite alternate;
}
.ozone-list>.danger:hover,
.ozone-list>.danger:focus {
animation: hover-danger 0.5s ease-in-out infinite alternate;
}
/* hide/show the menu */
.menuhiderlabel {
position: absolute;
top: 0px;
right: 0px;
width: 45px;
height: 45px;
cursor: pointer;
z-index: 1;
}
#menuhider:not(:checked) ~ .menuhiderlabel {
margin: var(--menumarginy) 0px;
margin-right: calc(var(--menumarginx) * 2);
width: var(--menubuttonbordery) !important;
height: var(--menubuttonbordery) !important;
border-radius: var(--rounding);
background-color: var(--barbuttoncolor);
outline: var(--barbuttonoutline) solid var(--barbuttonoutlinecolor);
}
.menuhiderlabel span {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
transition: transform 0.2s ease;
}
#menuhider:checked ~ .menuhiderlabel span {
transform: translate(-50%, -50%) scaleY(-1);
color: #dfdfdf !important;
}
#menuhider:checked ~ .menuhiderlabel:hover {
background-color: rgba(0, 0, 0, 0.1) !important;
}
.hide,
#dropdown-box,
#menuhider,
#menuhider:checked ~ #menu {
display: none !important;
}
#dropdown-box:checked ~ .dropdown-child {
display: block;
}
/* modals */
#modals {
display: none;
background-color: rgba(0, 0, 0, 0.4);
backdrop-filter: blur(6px);
position: fixed;
width: 100vw;
height: 100vh;
z-index: 30;
}
#modal-window {
background-color: var(--barcolor);
color: var(--barfontcolor);
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
left: round(50%, 1px);
top: round(50%, 1px);
transform: translate(round(-50%, 1px), round(-50%, 1px));
max-height: calc(100vh - 40px);
max-width: calc(100vw - 40px);
width: 750px;
overflow: hidden;
}
.modal-header {
height: 50px;
line-height: 30px;
}
.modal-header .progressContainer {
position: absolute;
top: 50px;
}
.modal-header .progressText {
white-space: nowrap;
font-size: 10pt;
}
#modal-title {
display: inline-block;
margin: 10px;
}
#modal-close {
float: right;
width: 30px;
text-align: center;
cursor: pointer;
font-size: 24px;
margin: 10px;
}
.modal-body {
display: none;
width: calc(100% - 40px);
max-height: calc(100vh - 135px);
padding: 20px;
padding-top: 0px;
margin-top: 25px;
overflow: auto;
}
.modal-body>*:first-child {
margin-top: 0px;
}
/* debug */
.retroarchWebcamVideo, .retroarchWebcamCanvas {
position: absolute;
left: 0px;
top: 0px;
z-index: 5000;
}
.retroarchWebcamCanvas {
top: 112px;
}
/* mobile */
@media only screen and (max-width: 720px) {
body {
--subpaddingy: 8px;
}
#menu {
width: calc(100% - calc(var(--menumarginx) * 2));
height: max-content;
padding-bottom: var(--menumarginy);
background-color: var(--barcolor);
}
#menu>li {
margin-bottom: 0px;
}
.dropdown-child {
max-width: calc(100vw - calc(var(--menumarginx) * 4));
width: max-content;
}
.dropdown-child a {
white-space: normal;
}
}