mirror of
https://github.com/dscalzi/HeliosLauncher.git
synced 2024-12-22 19:52:14 -08:00
74a60a61c2
Added a done button which closes the settings UI. Displays a warning before the user logs out of the last saved account. If they proceed with the logout, they will be redirected to the login UI. Added startup handling for when the user has 0 saved accounts. They will be brought directly to the login UI. Accounts are now validated each time they are switched.
2623 lines
58 KiB
CSS
2623 lines
58 KiB
CSS
/*******************************************************************************
|
|
* *
|
|
* Fonts *
|
|
* *
|
|
******************************************************************************/
|
|
|
|
@font-face {
|
|
font-family: 'Avenir Book';
|
|
src: url('../fonts/Avenir-Book.ttf');
|
|
}
|
|
|
|
@font-face {
|
|
font-family: 'Avenir Medium';
|
|
src: url('../fonts/Avenir-Medium.ttf');
|
|
}
|
|
|
|
@font-face {
|
|
font-family: 'Ringbearer';
|
|
src: url('../fonts/Ringbearer.ttf');
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* *
|
|
* Element Styles *
|
|
* *
|
|
******************************************************************************/
|
|
|
|
/* Reset body, html, and div presets. */
|
|
body, html, div {
|
|
margin: 0px;
|
|
padding: 0px;
|
|
}
|
|
|
|
/* Reset p presets. */
|
|
p {
|
|
-webkit-margin-before: 0em;
|
|
-webkit-margin-after: 0em;
|
|
}
|
|
|
|
/* Set default font and color. */
|
|
body, button {
|
|
font-family: 'Avenir Book';
|
|
color: white;
|
|
}
|
|
|
|
/*body {
|
|
background: url('./../images/backgrounds/0.jpg') no-repeat center center fixed;
|
|
background-size: cover;
|
|
}*/
|
|
|
|
/*******************************************************************************
|
|
* *
|
|
* Frame Styles (frame.ejs) *
|
|
* *
|
|
******************************************************************************/
|
|
|
|
/* Frame Bar */
|
|
#frameBar {
|
|
position: relative;
|
|
z-index: 100;
|
|
display: flex;
|
|
flex-direction: column;
|
|
transition: background-color 1s ease;
|
|
/*background-color: rgba(1, 2, 1, 0.5);*/
|
|
-webkit-user-select: none;
|
|
}
|
|
|
|
/* Undraggable region on the top of the frame. */
|
|
#frameResizableTop {
|
|
height: 2px;
|
|
width: 100%;
|
|
-webkit-app-region: no-drag;
|
|
}
|
|
|
|
/* Flexbox to wrap the main frame content. */
|
|
#frameMain {
|
|
display: flex;
|
|
height: 20px
|
|
}
|
|
|
|
/* Undraggable region on the left and right of the frame. */
|
|
.frameResizableVert {
|
|
width: 2px;
|
|
-webkit-app-region: no-drag;
|
|
}
|
|
|
|
/* Main frame content for windows. */
|
|
#frameContentWin {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
width: 100%;
|
|
-webkit-app-region: drag;
|
|
}
|
|
|
|
/* Main frame content for darwin. */
|
|
#frameContentDarwin {
|
|
display: flex;
|
|
justify-content: flex-start;
|
|
align-items: center;
|
|
width: 100%;
|
|
-webkit-app-region: drag;
|
|
}
|
|
|
|
/* Frame logo (windows only). */
|
|
#frameImageDock {
|
|
width: 100px;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
position: relative;
|
|
}
|
|
#frameImage {
|
|
height: 15px;
|
|
filter: grayscale(100%);
|
|
}
|
|
|
|
/* Windows frame button dock. */
|
|
#frameButtonDockWin {
|
|
-webkit-app-region: no-drag !important;
|
|
position: relative;
|
|
top: -2px;
|
|
right: -2px;
|
|
height: 22px;
|
|
}
|
|
#frameButtonDockWin > .frameButton:not(:first-child) {
|
|
margin-left: -4px;
|
|
}
|
|
|
|
/* Darwin frame button dock: NaN; */
|
|
#frameButtonDockDarwin {
|
|
-webkit-app-region: no-drag !important;
|
|
position: relative;
|
|
top: -1px;
|
|
right: -1px;
|
|
}
|
|
|
|
/* Windows Frame Button Styles. */
|
|
.frameButton {
|
|
background: none;
|
|
border: none;
|
|
height: 22px;
|
|
width: 39px;
|
|
cursor: pointer;
|
|
}
|
|
.frameButton:hover,
|
|
.frameButton:focus {
|
|
background: rgba(189, 189, 189, 0.43);
|
|
}
|
|
.frameButton:active {
|
|
background: rgba(156, 156, 156, 0.43);
|
|
}
|
|
.frameButton:focus {
|
|
outline: 0px;
|
|
}
|
|
|
|
/* Close button is red. */
|
|
#frameButton_close:hover,
|
|
#frameButton_close:focus {
|
|
background: rgba(255, 53, 53, 0.61) !important;
|
|
}
|
|
#frameButton_close:active {
|
|
background: rgba(235, 0, 0, 0.61) !important;
|
|
}
|
|
|
|
/* Darwin Frame Button Styles. */
|
|
.frameButtonDarwin {
|
|
height: 12px;
|
|
width: 12px;
|
|
border-radius: 50%;
|
|
border: 0px;
|
|
margin-left: 5px;
|
|
-webkit-app-region: no-drag !important;
|
|
cursor: pointer;
|
|
}
|
|
.frameButtonDarwin:focus {
|
|
outline: 0px;
|
|
}
|
|
|
|
#frameButtonDarwin_close {
|
|
background-color: #e74c32;
|
|
}
|
|
#frameButtonDarwin_close:hover,
|
|
#frameButtonDarwin_close:focus {
|
|
background-color: #FF9A8A;
|
|
}
|
|
#frameButtonDarwin_close:active {
|
|
background-color: #ff8d7b;
|
|
}
|
|
|
|
#frameButtonDarwin_minimize {
|
|
background-color: #fed045;
|
|
}
|
|
#frameButtonDarwin_minimize:hover,
|
|
#frameButtonDarwin_minimize:focus {
|
|
background-color: #FFE9A9;
|
|
}
|
|
#frameButtonDarwin_minimize:active {
|
|
background-color: #ffde7b;
|
|
}
|
|
|
|
#frameButtonDarwin_restoredown {
|
|
background-color: #96e734;
|
|
}
|
|
#frameButtonDarwin_restoredown:hover,
|
|
#frameButtonDarwin_restoredown:focus {
|
|
background-color: #D6FFA6;
|
|
}
|
|
#frameButtonDarwin_restoredown:active {
|
|
background-color: #bfff76;
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* *
|
|
* Welcome View (welcome.ejs) *
|
|
* *
|
|
******************************************************************************/
|
|
|
|
#welcomeContainer {
|
|
position: relative;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
height: 100%;
|
|
width: 100%;
|
|
}
|
|
|
|
#welcomeContent {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
width: 50%;
|
|
top: -10%;
|
|
position: relative;
|
|
}
|
|
|
|
/*
|
|
.cloudDiv {
|
|
position: absolute;
|
|
height: 100%;
|
|
width: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.cloudTop {
|
|
height: 50%;
|
|
width: 100%;
|
|
background-image: url('../images/cloudTrans.png');
|
|
animation: clouds1 80s linear infinite;
|
|
background-size: cover;
|
|
}
|
|
|
|
.cloudBottom {
|
|
height: 50%;
|
|
width: 100%;
|
|
background-image: url('../images/cloudTrans2.png');
|
|
animation: clouds2 70s linear infinite;
|
|
background-size: cover;
|
|
}
|
|
|
|
@keyframes clouds1 {
|
|
to {
|
|
background-position: 200%;
|
|
}
|
|
}
|
|
@keyframes clouds2 {
|
|
to {
|
|
background-position: 230%;
|
|
}
|
|
}
|
|
*/
|
|
|
|
#welcomeImageSeal {
|
|
border-radius: 50%;
|
|
border: 2px solid #cad7e1;
|
|
background: rgba(1, 2, 1, 0.5);
|
|
height: 125px;
|
|
width: 125px;
|
|
box-shadow: 0px 0px 10px 0px rgb(0, 0, 0);
|
|
margin-bottom: 5%;
|
|
margin-top: 10%;
|
|
}
|
|
|
|
#welcomeHeader {
|
|
font-family: 'Avenir Medium';
|
|
text-align: center;
|
|
color: white;
|
|
margin-bottom: 25px;
|
|
letter-spacing: 1px;
|
|
font-size: 20px;
|
|
text-shadow: white 0px 0px 0px;
|
|
}
|
|
|
|
#welcomeDescription {
|
|
text-align: justify;
|
|
font-size: 13px;
|
|
font-weight: 100;
|
|
text-shadow: rgba(255, 255, 255, 0.75) 0px 0px 20px
|
|
}
|
|
|
|
#welcomeDescCTA {
|
|
text-align: center;
|
|
font-size: 14px;
|
|
font-weight: 100;
|
|
text-shadow: rgba(255, 255, 255, 0.75) 0px 0px 20px
|
|
}
|
|
|
|
/* Login button styles. */
|
|
#welcomeButton {
|
|
background: none;
|
|
font-weight: bold;
|
|
letter-spacing: 2px;
|
|
border: none;
|
|
padding: 15px 5px;
|
|
margin: 10px 0px;
|
|
cursor: pointer;
|
|
position: relative;
|
|
right: -20px;
|
|
transition: 0.5s ease;
|
|
margin-top: 5%;
|
|
margin-bottom: -5%;
|
|
}
|
|
#welcomeButton:disabled {
|
|
color: rgba(255, 255, 255, 0.75);
|
|
pointer-events: none;
|
|
}
|
|
#welcomeButton:hover,
|
|
#welcomeButton:focus {
|
|
text-shadow: 0px 0px 20px #fff;
|
|
outline: none;
|
|
}
|
|
#welcomeButton:active {
|
|
color: #c7c7c7;
|
|
text-shadow: 0px 0px 20px #c7c7c7;
|
|
}
|
|
#welcomeSVG {
|
|
-webkit-transform: translate3d(0, 0, 0);
|
|
overflow: visible;
|
|
transform: rotate(90deg);
|
|
margin-left: 20px;
|
|
transition: 0.25s ease;
|
|
width: 20px;
|
|
height: 20px;
|
|
}
|
|
#welcomeButton:hover #welcomeSVG,
|
|
#welcomeButton:focus #welcomeSVG {
|
|
-webkit-filter: drop-shadow(0px 0px 2px #fff);
|
|
}
|
|
#welcomeButton:active #welcomeSVG .arrowLine {
|
|
stroke: #c7c7c7;
|
|
}
|
|
#welcomeButton:active #welcomeSVG {
|
|
-webkit-filter: drop-shadow(0px 0px 2px #c7c7c7);
|
|
}
|
|
#welcomeButton:disabled #welcomeSVG .arrowLine {
|
|
stroke: rgba(255, 255, 255, 0.75);
|
|
}
|
|
|
|
#welcomeButtonContent {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* *
|
|
* Login View (login.ejs) *
|
|
* *
|
|
******************************************************************************/
|
|
|
|
/* Styles for dimmer login span. */
|
|
.loginSpanDim {
|
|
font-size: 12px;
|
|
color: #848484;
|
|
font-weight: bold;
|
|
}
|
|
|
|
/* Main login container. */
|
|
#loginContainer {
|
|
position: relative;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
height: 100%;
|
|
width: 100%;
|
|
transition: filter 0.25s ease;
|
|
background: rgba(0, 0, 0, 0.50);
|
|
}
|
|
|
|
/* Login cancel button styles. */
|
|
#loginCancelContainer {
|
|
position: absolute;
|
|
top: 5%;
|
|
right: 5%;
|
|
}
|
|
|
|
/* Login cancel button styles. */
|
|
#loginCancelButton {
|
|
background: none;
|
|
border: none;
|
|
outline: none;
|
|
cursor: pointer;
|
|
transition: 0.25s ease;
|
|
}
|
|
#loginCancelButton:hover #loginCancelIcon,
|
|
#loginCancelButton:hover #loginCancelText,
|
|
#loginCancelButton:focus #loginCancelIcon,
|
|
#loginCancelButton:focus #loginCancelText {
|
|
text-shadow: 0px 0px 20px white;
|
|
}
|
|
#loginCancelButton:hover #loginCancelIcon,
|
|
#loginCancelButton:focus #loginCancelIcon {
|
|
box-shadow: 0px 0px 20px white;
|
|
}
|
|
#loginCancelButton:active #loginCancelIcon,
|
|
#loginCancelButton:active #loginCancelText {
|
|
text-shadow: 0px 0px 20px rgba(255, 255, 255, 0.75);
|
|
color: rgba(255, 255, 255, 0.75);
|
|
border-color: rgba(255, 255, 255, 0.75);
|
|
}
|
|
#loginCancelButton:active #loginCancelIcon {
|
|
box-shadow: 0px 0px 20px rgba(255, 255, 255, 0.75);
|
|
}
|
|
#loginCancelButton:disabled {
|
|
pointer-events: none;
|
|
}
|
|
#loginCancelButton:disabled #loginCancelIcon,
|
|
#loginCancelButton:disabled #loginCancelText {
|
|
color: rgba(255, 255, 255, 0.75);
|
|
border-color: rgba(255, 255, 255, 0.75);
|
|
}
|
|
|
|
/* The X in a circle icon for the cancel button. */
|
|
#loginCancelIcon {
|
|
border-radius: 50%;
|
|
border: 1px solid white;
|
|
box-sizing: border-box;
|
|
height: 30px;
|
|
width: 30px;
|
|
font-size: 19px;
|
|
line-height: 30px;
|
|
margin: 0 auto;
|
|
margin-bottom: 5px;
|
|
transition: 0.25s ease;
|
|
}
|
|
/* Text for the login cancel button. */
|
|
#loginCancelText {
|
|
font-size: 15px;
|
|
transition: 0.25s ease;
|
|
}
|
|
|
|
/* Login content wrapper. */
|
|
#loginContent {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
height: 100%;
|
|
padding: 0px 25px;
|
|
}
|
|
|
|
/* Login form. */
|
|
#loginForm {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
|
|
/* Login form anchor styles. */
|
|
#loginForm a {
|
|
font-size: 12px;
|
|
color: #848484;
|
|
font-weight: bold;
|
|
text-decoration: none;
|
|
transition: 0.25s ease;
|
|
}
|
|
#loginForm a:hover,
|
|
#loginForm a:focus {
|
|
color: #a2a2a2;
|
|
outline: none;
|
|
}
|
|
#loginForm a:active {
|
|
color: #8b8b8b;
|
|
}
|
|
|
|
/* Logo on login form. */
|
|
#loginImageSeal {
|
|
border-radius: 50%;
|
|
border: 2px solid #cad7e1;
|
|
background: rgba(1, 2, 1, 0.5);
|
|
height: 125px;
|
|
width: 125px;
|
|
box-shadow: 0px 0px 10px 0px rgb(0, 0, 0);
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
/* Header on login view. */
|
|
#loginSubheader {
|
|
font-family: 'Avenir Medium';
|
|
margin-bottom: 25px;
|
|
font-size: 12px;
|
|
letter-spacing: 1px;
|
|
font-weight: bold;
|
|
}
|
|
|
|
/* Container to organize login field elements. */
|
|
.loginFieldContainer {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
|
|
/* SVG icons on the login view. */
|
|
.loginSVG {
|
|
fill: #fff;
|
|
height: 20px;
|
|
width: 20px;
|
|
}
|
|
|
|
/* Span which displays errors related to login field content. */
|
|
.loginErrorSpan {
|
|
font-family: 'Avenir Medium';
|
|
font-weight: bold;
|
|
font-size: 8px;
|
|
color: #ff1b0c;
|
|
width: 100%;
|
|
text-align: right;
|
|
position: absolute;
|
|
top: 7px;
|
|
opacity: 0;
|
|
transition: 0.25s ease;
|
|
}
|
|
|
|
.shake {
|
|
animation: shake 0.82s cubic-bezier(.36,.07,.19,.97) both;
|
|
}
|
|
|
|
@keyframes shake {
|
|
10%, 90% {
|
|
transform: translate3d(-1px, 0, 0);
|
|
}
|
|
|
|
20%, 80% {
|
|
transform: translate3d(2px, 0, 0);
|
|
}
|
|
|
|
30%, 50%, 70% {
|
|
transform: translate3d(-4px, 0, 0);
|
|
}
|
|
|
|
40%, 60% {
|
|
transform: translate3d(4px, 0, 0);
|
|
}
|
|
}
|
|
|
|
/* Login text input styles. */
|
|
.loginField {
|
|
font-family: 'Avenir Book';
|
|
background: none;
|
|
border-width: 1.5px 0px 0px 0px;
|
|
border-style: solid;
|
|
width: 250px;
|
|
margin-bottom: 20px;
|
|
border-color: #fff;
|
|
color: rgba(255, 255, 255, 0.75);
|
|
font-weight: bold;
|
|
text-align: center;
|
|
box-sizing: border-box;
|
|
padding: 7.5px;
|
|
font-size: 10px;
|
|
letter-spacing: 1px;
|
|
}
|
|
.loginField:focus {
|
|
outline: none;
|
|
}
|
|
.loginField:disabled {
|
|
color: rgba(255, 255, 255, 0.50);
|
|
}
|
|
.loginField::-webkit-input-placeholder {
|
|
color: rgba(255, 255, 255, 0.75);
|
|
font-size: 10px;
|
|
letter-spacing: 1px;
|
|
text-align: center;
|
|
font-weight: bold;
|
|
}
|
|
.loginField:focus::-webkit-input-placeholder {
|
|
color: transparent;
|
|
}
|
|
|
|
/* Add spacing between password field and options bar. */
|
|
#labelPassword {
|
|
margin-bottom: 13px;
|
|
}
|
|
|
|
/* Container which contains the forgot and remember options. */
|
|
#loginOptions {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
width: 100%;
|
|
}
|
|
|
|
/* Remember option text. */
|
|
#loginRememberText {
|
|
padding-right: 10px;
|
|
transition: 0.25s ease;
|
|
}
|
|
|
|
/* Login button styles. */
|
|
#loginButton {
|
|
background: none;
|
|
font-weight: bold;
|
|
letter-spacing: 2px;
|
|
border: none;
|
|
padding: 15px 5px;
|
|
margin: 10px 0px;
|
|
cursor: pointer;
|
|
position: relative;
|
|
right: -20px;
|
|
transition: 0.5s ease;
|
|
}
|
|
#loginButton:disabled {
|
|
color: rgba(255, 255, 255, 0.75);
|
|
pointer-events: none;
|
|
}
|
|
#loginButton[loading] {
|
|
color: #fff;
|
|
}
|
|
#loginButton:hover,
|
|
#loginButton:focus {
|
|
text-shadow: 0px 0px 20px #fff;
|
|
outline: none;
|
|
}
|
|
#loginButton:active {
|
|
color: #c7c7c7;
|
|
text-shadow: 0px 0px 20px #c7c7c7;
|
|
}
|
|
#loginSVG {
|
|
-webkit-transform: translate3d(0, 0, 0);
|
|
overflow: visible;
|
|
transform: rotate(90deg);
|
|
margin-left: 20px;
|
|
transition: 0.25s ease;
|
|
width: 20px;
|
|
height: 20px;
|
|
}
|
|
#loginButton:hover #loginSVG,
|
|
#loginButton:focus #loginSVG {
|
|
-webkit-filter: drop-shadow(0px 0px 2px #fff);
|
|
}
|
|
#loginButton:active #loginSVG .arrowLine {
|
|
stroke: #c7c7c7;
|
|
}
|
|
#loginButton:active #loginSVG {
|
|
-webkit-filter: drop-shadow(0px 0px 2px #c7c7c7);
|
|
}
|
|
#loginButton:disabled #loginSVG .arrowLine {
|
|
stroke: rgba(255, 255, 255, 0.75);
|
|
}
|
|
|
|
#loginButtonContent {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
#loginButton .circle-loader,
|
|
#loginButton[loading] #loginSVG {
|
|
display: none;
|
|
}
|
|
#loginButton[loading] .circle-loader,
|
|
#loginButton #loginSVG {
|
|
display: initial;
|
|
}
|
|
|
|
|
|
.circle-loader {
|
|
margin-left: 20px;
|
|
border: 2px solid rgba(255, 255, 255, 0.5);
|
|
border-left-color: #ffffff;
|
|
animation-name: loader-spin;
|
|
animation-duration: 1s;
|
|
animation-iteration-count: infinite;
|
|
animation-timing-function: linear;
|
|
position: relative;
|
|
display: inline-block;
|
|
vertical-align: top;
|
|
border-radius: 50%;
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
.load-complete {
|
|
animation: none;
|
|
border-color: #ffffff;
|
|
transition: border 500ms ease-out;
|
|
}
|
|
.checkmark {
|
|
display: none;
|
|
}
|
|
.checkmark.draw:after {
|
|
animation-duration: 800ms;
|
|
animation-timing-function: ease;
|
|
animation-name: checkmark;
|
|
transform: scaleX(-1) rotate(135deg);
|
|
}
|
|
.checkmark:after {
|
|
opacity: 1;
|
|
height: 8px;
|
|
width: 4px;
|
|
transform-origin: left top;
|
|
border-right: 2px solid #ffffff;
|
|
border-top: 2px solid #ffffff;
|
|
content: '';
|
|
left: 2px;
|
|
top: 8px;
|
|
position: absolute;
|
|
}
|
|
@keyframes loader-spin {
|
|
0% {
|
|
transform: rotate(0deg);
|
|
}
|
|
100% {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
@keyframes checkmark {
|
|
0% {
|
|
height: 0;
|
|
width: 0;
|
|
opacity: 1;
|
|
}
|
|
20% {
|
|
height: 0;
|
|
width: 4px;
|
|
opacity: 1;
|
|
}
|
|
40% {
|
|
height: 8px;
|
|
width: 4px;
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
height: 8px;
|
|
width: 4px;
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/*.spinningCircle {
|
|
margin-left: 20px;
|
|
height: 16px;
|
|
width: 16px;
|
|
border-radius: 50%;
|
|
border: 2px solid rgba(255,255,255,0);
|
|
border-top-color: #ffffff;
|
|
border-right-color: #ffffff;
|
|
border-left-color: rgba(255, 255, 255, 0.50);
|
|
border-bottom-color: rgba(255, 255, 255, 0.50);
|
|
animation: single2 4s infinite linear;
|
|
}
|
|
|
|
@keyframes single2 {
|
|
0% {
|
|
transform: rotate(0deg);
|
|
}
|
|
100% {
|
|
transform: rotate(720deg);
|
|
}
|
|
}*/
|
|
|
|
/* Disclaimer container. */
|
|
#loginDisclaimer {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
|
|
/* Add spacing between register anchor and disclaimer. */
|
|
#loginRegisterSpan {
|
|
margin-bottom: 5px;
|
|
}
|
|
|
|
/* Disclaimer text styles. */
|
|
.loginDisclaimerText {
|
|
font-size: 7px;
|
|
color: #848484;
|
|
font-weight: bold;
|
|
text-align: center;
|
|
}
|
|
|
|
/* * *
|
|
* Login View | Custom Checkbox
|
|
* * */
|
|
|
|
/* Checkbox container. */
|
|
#checkmarkContainer {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
align-items: center;
|
|
position: relative;
|
|
cursor: pointer;
|
|
font-size: 22px;
|
|
-webkit-user-select: none;
|
|
}
|
|
|
|
/* Hide the default checkbox. */
|
|
#checkmarkContainer input {
|
|
opacity: 0;
|
|
cursor: pointer;
|
|
position: absolute;
|
|
}
|
|
|
|
/* Create a custom checkbox. */
|
|
.loginCheckmark {
|
|
position: relative;
|
|
height: 10px;
|
|
width: 10px;
|
|
border: 1px solid #848484;
|
|
border-radius: 1px;
|
|
background: none;
|
|
transition: 0.25s ease;
|
|
}
|
|
/* On hover and focus, add a grey border color. */
|
|
#checkmarkContainer:hover input ~ *,
|
|
#checkmarkContainer input:focus ~ * {
|
|
color: #a2a2a2;
|
|
border-color: #a2a2a2;
|
|
}
|
|
/* On keydown, darken the checkbox a bit. */
|
|
#checkmarkContainer input:active ~ *:not(#loginRememberText) {
|
|
color: #8d8d8d;
|
|
border-color: #8d8d8d;
|
|
}
|
|
#checkmarkContainer[disabled] {
|
|
pointer-events: none;
|
|
}
|
|
/* For checked -> #checkmarkContainer input:checked ~ * */
|
|
/* Create the checkmark/indicator (hidden when not checked). */
|
|
.loginCheckmark:after {
|
|
content: "";
|
|
display: none;
|
|
}
|
|
/* Show the checkmark when checked. */
|
|
#checkmarkContainer input:checked ~ .loginCheckmark:after {
|
|
display: block;
|
|
}
|
|
/* Style the checkmark/indicator. */
|
|
#checkmarkContainer .loginCheckmark:after {
|
|
position: absolute;
|
|
left: 3.5px;
|
|
top: 0.5px;
|
|
width: 2px;
|
|
height: 6px;
|
|
border: solid #a2a2a2;
|
|
border-width: 0 2px 2px 0;
|
|
transform: rotate(45deg);
|
|
}
|
|
|
|
/*
|
|
#login_filter {
|
|
height: calc(100% - 22px);
|
|
width: 100%;
|
|
z-index: 9000;
|
|
position: absolute;
|
|
filter: blur(8px) contrast(0.9) brightness(1.0);
|
|
background: url('./../images/backgrounds/0.jpg') no-repeat center center fixed;
|
|
transform: scale(1.2);
|
|
background-size: cover;
|
|
}
|
|
*/
|
|
|
|
/*******************************************************************************
|
|
* *
|
|
* Settings View (sttings.ejs) *
|
|
* *
|
|
******************************************************************************/
|
|
|
|
/* Main settings container. */
|
|
#settingsContainer {
|
|
position: relative;
|
|
height: 100%;
|
|
display: flex;
|
|
background: rgba(0, 0, 0, 0.50);
|
|
}
|
|
|
|
/* Left hand side of the settings UI, for navigation. */
|
|
#settingsContainerLeft {
|
|
height: 100%;
|
|
width: 25%;
|
|
padding: 5% 0px;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
/* Settings navigation container. */
|
|
#settingsNavContainer {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
/* Navigation header styles. */
|
|
#settingsNavHeader {
|
|
display: flex;
|
|
justify-content: center;
|
|
}
|
|
#settingsNavHeaderText {
|
|
font-size: 20px;
|
|
}
|
|
|
|
/* Navigation items outer container. */
|
|
#settingsNavItemsContainer {
|
|
height: 100%;
|
|
display: flex;
|
|
justify-content: center;
|
|
padding-top: 25%;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
/* Navigation items content container. */
|
|
#settingsNavItemsContent {
|
|
display: flex;
|
|
flex-direction: column;
|
|
position: relative;
|
|
}
|
|
|
|
/* Navigation item shared styles. */
|
|
.settingsNavItem {
|
|
background: none;
|
|
border: none;
|
|
text-align: left;
|
|
margin: 5px 0px;
|
|
padding: 0px 20px;
|
|
color: grey;
|
|
cursor: pointer;
|
|
outline: none;
|
|
transition: 0.25s ease;
|
|
}
|
|
.settingsNavItem:hover,
|
|
.settingsNavItem:focus {
|
|
color: #c1c1c1;
|
|
text-shadow: 0px 0px 20px #c1c1c1;
|
|
}
|
|
.settingsNavItem[selected] {
|
|
cursor: default;
|
|
color: white;
|
|
text-shadow: none;
|
|
}
|
|
|
|
/* Content container for the done button. */
|
|
#settingsNavContentBottom {
|
|
position: absolute;
|
|
bottom: 20%;
|
|
}
|
|
|
|
/* Settings navigational divider. */
|
|
.settingsNavDivider {
|
|
width: 75%;
|
|
height: 0.5px;
|
|
background: rgba(255, 255, 255, 0.75);
|
|
margin-left: auto;
|
|
margin-bottom: 25px;
|
|
}
|
|
|
|
/* Settings done button styles. */
|
|
#settingsNavDone {
|
|
background: none;
|
|
border: none;
|
|
text-align: left;
|
|
margin: 5px 0px;
|
|
padding: 0px 20px;
|
|
color: white;
|
|
cursor: pointer;
|
|
outline: none;
|
|
transition: 0.25s ease;
|
|
}
|
|
#settingsNavDone:hover,
|
|
#settingsNavDone:focus {
|
|
text-shadow: 0px 0px 20px white, 0px 0px 20px white, 0px 0px 20px white;
|
|
}
|
|
#settingsNavDone:active {
|
|
text-shadow: 0px 0px 20px rgba(255, 255, 255, 0.75), 0px 0px 20px rgba(255, 255, 255, 0.75), 0px 0px 20px rgba(255, 255, 255, 0.75);
|
|
color: rgba(255, 255, 255, 0.75);
|
|
}
|
|
#settingsNavDone:disabled {
|
|
color: rgba(255, 255, 255, 0.75);
|
|
pointer-events: none;
|
|
}
|
|
|
|
/* Right hand side of the settings container, for tabs. */
|
|
#settingsContainerRight {
|
|
height: 100%;
|
|
width: 75%;
|
|
padding-top: 5%;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
/* Settings tab shared styles. */
|
|
.settingsTab {
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow-y: auto;
|
|
}
|
|
.settingsTab::-webkit-scrollbar {
|
|
width: 2px;
|
|
}
|
|
.settingsTab::-webkit-scrollbar-track {
|
|
display: none;
|
|
}
|
|
.settingsTab::-webkit-scrollbar-thumb {
|
|
border-radius: 10px;
|
|
box-shadow: inset 0 0 10px rgba(255, 255, 255, 0.50);
|
|
}
|
|
|
|
/* Tab header shared styles. */
|
|
.settingsTabHeader {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
.settingsTabHeaderText {
|
|
font-size: 20px;
|
|
font-family: 'Avenir Medium';
|
|
}
|
|
.settingsTabHeaderDesc {
|
|
font-size: 12px;
|
|
}
|
|
|
|
/* * *
|
|
* Settings View (Account Tab)
|
|
* * */
|
|
|
|
/* Add account button styles. */
|
|
#settingsAddAccountContainer {
|
|
margin-top: 20px;
|
|
}
|
|
#settingsAddAccount {
|
|
background: rgba(0, 0, 0, 0.25);
|
|
border: 1px solid rgba(126, 126, 126, 0.57);
|
|
border-radius: 3px;
|
|
height: 50px;
|
|
width: 75%;
|
|
text-align: left;
|
|
padding: 0px 50px;
|
|
cursor: pointer;
|
|
outline: none;
|
|
transition: 0.25s ease;
|
|
}
|
|
#settingsAddAccount:hover,
|
|
#settingsAddAccount:focus {
|
|
background: rgba(54, 54, 54, 0.25);
|
|
text-shadow: 0px 0px 20px white;
|
|
}
|
|
|
|
/* Settings auth accounts header. */
|
|
#settingsCurrentAccountsHeader {
|
|
margin: 20px 0px;
|
|
}
|
|
#settingsCurrentAccountsHeaderText {
|
|
font-size: 16px;
|
|
}
|
|
|
|
/* Auth account list container styles. */
|
|
#settingsCurrentAccounts {
|
|
margin-bottom: 5%;
|
|
}
|
|
#settingsCurrentAccounts > .settingsAuthAccount:not(:last-child) {
|
|
margin-bottom: 10px;
|
|
}
|
|
#settingsCurrentAccounts > .settingsAuthAccount:not(:first-child) {
|
|
margin-top: 10px;
|
|
}
|
|
|
|
/* Auth account shared styles. */
|
|
.settingsAuthAccount {
|
|
display: flex;
|
|
width: 75%;
|
|
background: rgba(0, 0, 0, 0.25);
|
|
border-radius: 3px;
|
|
border: 1px solid rgba(126, 126, 126, 0.57);
|
|
}
|
|
|
|
/* Left hand side of an auth account element, for the skin image. */
|
|
.settingsAuthAccountLeft {
|
|
padding: 5px 5px 5px 20px;
|
|
}
|
|
|
|
/* Image of the auth account's skin. */
|
|
.settingsAuthAccountImage {
|
|
height: 115px;
|
|
}
|
|
|
|
/* Right hand side of the auth account, for info + actions. */
|
|
.settingsAuthAccountRight {
|
|
display: flex;
|
|
width: 100%;
|
|
}
|
|
|
|
/* Account details container. */
|
|
.settingsAuthAccountDetails {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
margin-left: 20px;
|
|
width: 100%;
|
|
}
|
|
.settingsAuthAccountDetails > *:not(:last-child) {
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
/* Account detail element styles. */
|
|
.settingsAuthAccountDetailPane {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
.settingsAuthAccountDetailTitle {
|
|
font-size: 12px;
|
|
color: grey;
|
|
font-weight: bold;
|
|
font-family: 'Avenir Medium';
|
|
}
|
|
.settingsAuthAccountDetailValue {
|
|
font-size: 14px;
|
|
}
|
|
|
|
/* Account actions container. */
|
|
.settingsAuthAccountActions {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-between;
|
|
align-items: flex-end;
|
|
padding: 10px;
|
|
}
|
|
|
|
/* Account select button shared styles. */
|
|
.settingsAuthAccountSelect {
|
|
opacity: 0;
|
|
border: none;
|
|
white-space: nowrap;
|
|
background: none;
|
|
font-family: 'Avenir Medium';
|
|
outline: none;
|
|
transition: 0.25s ease;
|
|
}
|
|
.settingsAuthAccountSelect:hover:not([selected]),
|
|
.settingsAuthAccountSelect:focus:not([selected]) {
|
|
text-shadow: 0px 0px 20px white, 0px 0px 20px white;
|
|
cursor: pointer;
|
|
}
|
|
.settingsAuthAccount:hover .settingsAuthAccountSelect:not([selected]),
|
|
.settingsAuthAccountSelect[selected] {
|
|
opacity: 1;
|
|
}
|
|
.settingsAuthAccountSelect[selected] {
|
|
pointer-events: none;
|
|
}
|
|
|
|
/* Account logout button shared styles. */
|
|
.settingsAuthAccountLogOut {
|
|
opacity: 0;
|
|
border: 1px solid rgb(241, 55, 55);
|
|
color: rgb(241, 55, 55);
|
|
background: none;
|
|
font-size: 12px;
|
|
border-radius: 3px;
|
|
font-family: 'Avenir Medium';
|
|
transition: 0.25s ease;
|
|
cursor: pointer;
|
|
outline: none;
|
|
}
|
|
.settingsAuthAccountLogOut:hover,
|
|
.settingsAuthAccountLogOut:focus {
|
|
box-shadow: 0px 0px 20px rgb(241, 55, 55);
|
|
background: rgba(241, 55, 55, 0.25);
|
|
}
|
|
.settingsAuthAccountLogOut:active {
|
|
box-shadow: 0px 0px 20px rgb(185, 47, 47);
|
|
background: rgba(185, 47, 47, 0.25);
|
|
border: 1px solid rgb(185, 47, 47);
|
|
color: rgb(185, 47, 47);
|
|
}
|
|
.settingsAuthAccount:hover .settingsAuthAccountLogOut {
|
|
opacity: 1;
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* *
|
|
* Landing View (Structural Styles) *
|
|
* *
|
|
******************************************************************************/
|
|
|
|
/* Main content container. */
|
|
#landingContainer {
|
|
height: 100%;
|
|
position: relative;
|
|
transition: background 2s ease;
|
|
overflow-y: hidden;
|
|
}
|
|
|
|
/* Upper content container. */
|
|
#landingContainer > #upper {
|
|
position: relative;
|
|
transition: top 2s ease;
|
|
top: 0px;
|
|
height: 77%;
|
|
display: flex;
|
|
}
|
|
#landingContainer > #upper > #left {
|
|
display: inline-flex;
|
|
width: 15%;
|
|
height: 100%;
|
|
justify-content: flex-end;
|
|
}
|
|
#landingContainer > #upper > #content {
|
|
display: inline-flex;
|
|
width: 70%;
|
|
height: 100%;
|
|
}
|
|
#landingContainer > #upper > #right {
|
|
display: inline-flex;
|
|
width: 15%;
|
|
height: 100%;
|
|
}
|
|
|
|
/* Lower content container. */
|
|
#landingContainer > #lower {
|
|
height: 23%;
|
|
display: flex;
|
|
background: linear-gradient(to top, rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0));
|
|
}
|
|
#landingContainer > #lower > #left {
|
|
position: relative;
|
|
transition: top 2s ease;
|
|
top: 0px;
|
|
height: 100%;
|
|
width: 33%;
|
|
display: inline-flex;
|
|
justify-content: center;
|
|
}
|
|
#landingContainer > #lower > #left #content {
|
|
position: relative;
|
|
top: 25px;
|
|
display: inline-flex;
|
|
line-height: 24px;
|
|
left: 50px;
|
|
}
|
|
#landingContainer > #lower > #center {
|
|
position: relative;
|
|
transition: top 2s ease;
|
|
top: 0px;
|
|
height: 100%;
|
|
width: 34%;
|
|
display: inline-flex;
|
|
justify-content: center;
|
|
}
|
|
#landingContainer > #lower > #center #content {
|
|
position: relative;
|
|
z-index: 500;
|
|
transition: top 2s ease;
|
|
top: 10px;
|
|
}
|
|
#landingContainer > #lower > #right {
|
|
position: relative;
|
|
transition: top 2s ease;
|
|
top: 0px;
|
|
height: 100%;
|
|
width: 33%;
|
|
display: inline-flex;
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* *
|
|
* Landing View (News Styles) *
|
|
* *
|
|
******************************************************************************/
|
|
|
|
/* Main container. */
|
|
#newsContainer {
|
|
position: absolute;
|
|
top: 100%;
|
|
height: 100%;
|
|
width: 100%;
|
|
transition: top 2s ease;
|
|
display: flex;
|
|
align-items: flex-end;
|
|
justify-content: center;
|
|
}
|
|
|
|
/* News content container. */
|
|
#newsContent {
|
|
height: 82vh;
|
|
width: 82vw;
|
|
display: flex;
|
|
}
|
|
|
|
/* News article status container (left). */
|
|
#newsStatusContainer {
|
|
width: 25%;
|
|
height: calc(100% - 30px);
|
|
padding: 15px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
/* News status content. */
|
|
#newsStatusContent {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
/* News article title styles. */
|
|
#newsArticleTitle {
|
|
font-size: 20px;
|
|
font-weight: bold;
|
|
font-family: 'Avenir Medium';
|
|
}
|
|
#newsArticleTitle {
|
|
color: white;
|
|
text-decoration: none;
|
|
transition: 0.25s ease;
|
|
outline: none;
|
|
}
|
|
#newsArticleTitle:hover,
|
|
#newsArticleTitle:focus {
|
|
text-shadow: 0px 0px 20px white;
|
|
}
|
|
#newsArticleTitle:active {
|
|
color: #c7c7c7;
|
|
text-shadow: 0px 0px 20px #c7c7c7;
|
|
}
|
|
|
|
/* News meta container. */
|
|
#newsMetaContainer {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
/* Date and author shared styles. */
|
|
#newsArticleDate,
|
|
#newsArticleAuthor {
|
|
display: inline-block;
|
|
font-size: 10px;
|
|
padding: 0px 5px;
|
|
font-weight: bold;
|
|
border-radius: 2px;
|
|
}
|
|
|
|
/* Date styles. */
|
|
#newsArticleDate {
|
|
background: white;
|
|
color: black;
|
|
margin-top: 5px;
|
|
}
|
|
|
|
/* Author styles. */
|
|
#newsArticleAuthor {
|
|
background: #a02d2a;
|
|
}
|
|
|
|
/* News article comments styles. */
|
|
#newsArticleComments {
|
|
margin-top: 5px;
|
|
display: inline-block;
|
|
font-size: 10px;
|
|
color: #ffffff;
|
|
text-decoration: none;
|
|
transition: 0.25s ease;
|
|
outline: none;
|
|
}
|
|
#newsArticleComments:focus,
|
|
#newsArticleComments:hover {
|
|
color: #e0e0e0;
|
|
}
|
|
#newsArticleComments:active {
|
|
color: #c7c7c7;
|
|
}
|
|
|
|
/* Article content container (right). */
|
|
#newsArticleContainer {
|
|
width: 75%;
|
|
height: 100%;
|
|
}
|
|
|
|
/* Article content styles. */
|
|
#newsArticleContentScrollable {
|
|
font-size: 12px;
|
|
max-width: 80%;
|
|
margin: 25px 35px 0px 25px;
|
|
overflow-y: scroll;
|
|
height: calc(100% - 25px);
|
|
padding: 0px 15px 0px 15px;
|
|
}
|
|
#newsArticleContentScrollable img {
|
|
max-width: 95%;
|
|
display: block;
|
|
margin: 0 auto;
|
|
}
|
|
#newsArticleContentScrollable a {
|
|
color: rgba(202, 202, 202, 0.75);
|
|
transition: 0.25s ease;
|
|
outline: none;
|
|
}
|
|
#newsArticleContentScrollable a:hover,
|
|
#newsArticleContentScrollable a:focus {
|
|
color: rgba(255, 255, 255, 0.75);
|
|
}
|
|
#newsArticleContentScrollable a:active {
|
|
color: rgba(165, 165, 165, 0.75);
|
|
}
|
|
#newsArticleContentScrollable::-webkit-scrollbar {
|
|
width: 2px;
|
|
}
|
|
#newsArticleContentScrollable::-webkit-scrollbar-track {
|
|
display: none;
|
|
}
|
|
#newsArticleContentScrollable::-webkit-scrollbar-thumb {
|
|
border-radius: 10px;
|
|
box-shadow: inset 0 0 10px rgba(255, 255, 255, 0.50);
|
|
}
|
|
|
|
/* Div to add spacing at the end of a news article. */
|
|
.newsArticleSpacer {
|
|
height: 30px;
|
|
}
|
|
|
|
/* News navigation container. */
|
|
#newsNavigationContainer {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
/* Navigation status span. */
|
|
#newsNavigationStatus {
|
|
font-size: 12px;
|
|
margin: 0px 15px;
|
|
}
|
|
|
|
/* Left and right navigation button styles. */
|
|
#newsNavigateLeft,
|
|
#newsNavigateRight {
|
|
background: none;
|
|
border: none;
|
|
outline: none;
|
|
height: 20px;
|
|
cursor: pointer;
|
|
}
|
|
#newsNavigateLeft:hover #newsNavigationLeftSVG,
|
|
#newsNavigateLeft:focus #newsNavigationLeftSVG,
|
|
#newsNavigateRight:hover #newsNavigationRightSVG,
|
|
#newsNavigateRight:focus #newsNavigationRightSVG {
|
|
-webkit-filter: drop-shadow(0px 0px 2px #fff);
|
|
}
|
|
#newsNavigateLeft:active #newsNavigationLeftSVG .arrowLine,
|
|
#newsNavigateRight:active #newsNavigationRightSVG .arrowLine {
|
|
stroke: #c7c7c7;
|
|
}
|
|
#newsNavigateLeft:active #newsNavigationLeftSVG,
|
|
#newsNavigateRight:active #newsNavigationRightSVG {
|
|
-webkit-filter: drop-shadow(0px 0px 2px #c7c7c7);
|
|
}
|
|
#newsNavigateLeft:disabled #newsNavigationLeftSVG .arrowLine,
|
|
#newsNavigateRight:disabled #newsNavigationRightSVG .arrowLine {
|
|
stroke: rgba(255, 255, 255, 0.75);
|
|
}
|
|
#newsNavigationLeftSVG {
|
|
transform: rotate(-90deg);
|
|
width: 15px;
|
|
}
|
|
#newsNavigationRightSVG {
|
|
transform: rotate(90deg);
|
|
width: 15px;
|
|
}
|
|
|
|
/* News error (message) container. */
|
|
#newsErrorContainer {
|
|
height: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
}
|
|
#newsErrorFailed {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
}
|
|
|
|
/* News error content (message). */
|
|
.newsErrorContent {
|
|
font-size: 20px;
|
|
}
|
|
#newsErrorLoading {
|
|
display: flex;
|
|
width: 168.92px;
|
|
}
|
|
#nELoadSpan {
|
|
white-space: pre;
|
|
}
|
|
/* News error retry button styles. */
|
|
#newsErrorRetry {
|
|
font-size: 12px;
|
|
font-weight: bold;
|
|
cursor: pointer;
|
|
background: none;
|
|
border: none;
|
|
outline: none;
|
|
transition: 0.25s ease;
|
|
}
|
|
#newsErrorRetry:focus,
|
|
#newsErrorRetry:hover {
|
|
text-shadow: 0px 0px 20px white;
|
|
}
|
|
#newsErrorRetry:active {
|
|
color: #c7c7c7;
|
|
text-shadow: 0px 0px 20px #c7c7c7;
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* *
|
|
* Landing View (Top Styles) *
|
|
* *
|
|
******************************************************************************/
|
|
|
|
/* * *
|
|
* Landing View (Top Styles) | Left Content
|
|
* * */
|
|
|
|
/* Logo image. */
|
|
#image_seal {
|
|
height: 70px;
|
|
width: auto;
|
|
position: relative;
|
|
border: 2px solid white;
|
|
box-sizing: border-box;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
/* Logo container styles. */
|
|
#image_seal_container {
|
|
position: relative;
|
|
height: 70px;
|
|
width: 70px;
|
|
border-radius: 50%;
|
|
margin-top: 50px;
|
|
}
|
|
|
|
/* Logo container styles w/ update. */
|
|
#image_seal_container[update]{
|
|
cursor: pointer
|
|
}
|
|
#image_seal_container[update]:before,
|
|
#image_seal_container[update]:after {
|
|
cursor: pointer;
|
|
position: absolute;
|
|
content: '';
|
|
height: 100%;
|
|
width: 100%;
|
|
top: 0%;
|
|
left: 0%;
|
|
border-radius: 50%;
|
|
box-shadow: 0 0 15px #43c628;
|
|
animation: glow-grow 4s ease-out infinite;
|
|
background: rgba(0, 0, 0, 0.15);
|
|
}
|
|
#image_seal_container[update]:before {
|
|
animation-delay: 2s;
|
|
}
|
|
|
|
/* Update available tooltip styles. */
|
|
#updateAvailableTooltip {
|
|
cursor: pointer;
|
|
visibility: hidden;
|
|
opacity: 0;
|
|
width: 100px;
|
|
height: 15px;
|
|
background-color: rgb(0, 0, 0);
|
|
color: #fff;
|
|
text-align: center;
|
|
border-radius: 4px;
|
|
padding: 2px;
|
|
position: absolute;
|
|
z-index: 1;
|
|
top: 115%;
|
|
left: -17.5px;
|
|
font-family: 'Avenir Medium';
|
|
font-size: 12px;
|
|
transition: visibility 0s linear 0.25s, opacity 0.25s ease;
|
|
}
|
|
#updateAvailableTooltip::after {
|
|
content: " ";
|
|
position: absolute;
|
|
left: 50%;
|
|
bottom: 100%;
|
|
margin-left: -5px;
|
|
border-width: 5px;
|
|
border-style: solid;
|
|
border-color: transparent transparent rgb(0, 0, 0) transparent;
|
|
}
|
|
#image_seal_container[update]:hover #updateAvailableTooltip {
|
|
visibility: visible;
|
|
opacity: 1;
|
|
transition-delay: 0s;
|
|
}
|
|
|
|
/* Update available animation. */
|
|
@keyframes glow-grow {
|
|
0% {
|
|
opacity: 0;
|
|
transform: scale(1);
|
|
}
|
|
80% {
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
transform: scale(1.5);
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
/* * *
|
|
* Landing View (Bottom Styles) | Right Content
|
|
* * */
|
|
|
|
/* Wrapper container for top, right content. */
|
|
#rightContainer {
|
|
display: flex;
|
|
flex-direction: column;
|
|
position: relative;
|
|
top: 50px;
|
|
align-items: flex-start;
|
|
height: calc(100% - 50px);
|
|
}
|
|
|
|
/* Right hand user content container. */
|
|
#user_content {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
box-sizing: border-box;
|
|
position: relative;
|
|
}
|
|
|
|
/* User profile avatar container. */
|
|
#avatarContainer {
|
|
border-radius: 50%;
|
|
border: 2px solid #cad7e1;
|
|
box-sizing: border-box;
|
|
background: rgba(1, 2, 1, 0.5);
|
|
height: 70px;
|
|
width: 70px;
|
|
box-shadow: 0px 0px 10px 0px rgb(0, 0, 0);
|
|
overflow: hidden;
|
|
position: relative;
|
|
background-image: url('https://cdn.discordapp.com/avatars/169197209630277642/6650b5a50e1cb3d00a79b9b88b9a0cd4.png');
|
|
background-size: contain;
|
|
}
|
|
|
|
/* Avatar edit overlay. */
|
|
#avatarOverlay {
|
|
opacity: 0;
|
|
position: absolute;
|
|
z-index: 1;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
transition: 0.25s ease;
|
|
font-weight: bold;
|
|
letter-spacing: 2px;
|
|
background: linear-gradient(65deg, rgba(0, 0, 0, 0.4), rgba(136, 77, 77, 0.4) 60%);
|
|
-webkit-user-select: none;
|
|
cursor: pointer;
|
|
width: 100%;
|
|
height: 100%;
|
|
border-radius: 50%;
|
|
}
|
|
#avatarOverlay:hover {
|
|
opacity: 1;
|
|
}
|
|
|
|
/* User profile name text. */
|
|
#user_text {
|
|
font-size: 12px;
|
|
min-width: 135px;
|
|
font-weight: 900;
|
|
letter-spacing: 1px;
|
|
text-shadow: 0px 0px 20px black;
|
|
position: absolute;
|
|
right: 95px;
|
|
text-align: right;
|
|
}
|
|
|
|
/* Social media icon content container. */
|
|
#mediaContent {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
margin-top: 25px;
|
|
height: calc(100% - 95px);
|
|
width: 70px;
|
|
align-items: center;
|
|
}
|
|
|
|
/* Social Media Icon division containers. */
|
|
#internalMedia, #externalMedia {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
/* Container object which wraps an icon to ensure fluid transitions. */
|
|
.mediaContainer {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
height: 27px;
|
|
}
|
|
|
|
/* Divider bar between the external and internal icons. */
|
|
.mediaDivider {
|
|
height: 1px;
|
|
width: 14px;
|
|
background: rgb(255, 255, 255);
|
|
margin: 10px 0px;
|
|
}
|
|
|
|
/* Social media icon shared styles. */
|
|
.mediaSVG {
|
|
fill: #ffffff;
|
|
height: 12px;
|
|
transition: 0.25s ease;
|
|
cursor: pointer;
|
|
height: 12px;
|
|
width: 25px;
|
|
}
|
|
.mediaSVG:hover,
|
|
.mediaURL:focus .mediaSVG,
|
|
.mediaSVG:active {
|
|
height: 20px;
|
|
}
|
|
|
|
/* Social media URL shared styles. */
|
|
.mediaURL {
|
|
outline: none;
|
|
}
|
|
|
|
/* Internal media button shared styles. */
|
|
.mediaButton {
|
|
background: none;
|
|
border: none;
|
|
padding: 0px;
|
|
display: flex;
|
|
align-items: center;
|
|
outline: none;
|
|
}
|
|
|
|
#settingsMediaContainer {
|
|
position: relative;
|
|
}
|
|
|
|
/* Settings icon colors. */
|
|
#settingsSVG {
|
|
stroke: #ffffff;
|
|
height: 15px;
|
|
}
|
|
.mediaButton:hover #settingsSVG,
|
|
.mediaButton:focus #settingsSVG,
|
|
.mediaButton:active #settingsSVG {
|
|
height: 23px;
|
|
}
|
|
|
|
/* Settings tooltip styles. */
|
|
#settingsTooltip {
|
|
visibility: hidden;
|
|
opacity: 0;
|
|
width: 75px;
|
|
height: 20px;
|
|
background-color: rgba(0, 0, 0, 0.75);
|
|
text-align: center;
|
|
border-radius: 4px;
|
|
position: absolute;
|
|
z-index: 1;
|
|
right: 130%;
|
|
font-size: 12px;
|
|
line-height: 20px;
|
|
transition: visibility 0s linear 0.25s, opacity 0.25s ease;
|
|
}
|
|
#settingsTooltip::after {
|
|
content: " ";
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 100%;
|
|
margin-top: -5px;
|
|
border-width: 5px;
|
|
border-style: solid;
|
|
border-color: transparent transparent transparent rgba(0, 0, 0, 0.75);
|
|
}
|
|
.mediaButton:hover #settingsTooltip,
|
|
.mediaButton:focus #settingsTooltip,
|
|
.mediaButton:active #settingsTooltip {
|
|
visibility: visible;
|
|
opacity: 1;
|
|
transition-delay:0s;
|
|
}
|
|
|
|
/* Twitter icon colors. */
|
|
#twitterSVG:hover,
|
|
#twitterURL:focus #twitterSVG {
|
|
fill: #1da1f2;
|
|
}
|
|
#twitterSVG:active {
|
|
fill: #1b8dd4;
|
|
}
|
|
|
|
/* Instagram icon colors. */
|
|
#instagramSVG:hover,
|
|
#instagramURL:focus #instagramSVG {
|
|
fill: url('#instaFill')
|
|
/*fill: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%, #d6249f 60%, #285AEB 90%); */
|
|
}
|
|
#instagramSVG:active {
|
|
fill: url('#instaFill')
|
|
}
|
|
|
|
/* Youtube icon colors. */
|
|
#youtubeSVG:hover,
|
|
#youtubeURL:focus #youtubeSVG {
|
|
fill: #f00;
|
|
}
|
|
#youtubeSVG:active {
|
|
fill: #ea0202;
|
|
}
|
|
|
|
/* Discord icon colors. */
|
|
#discordSVG:hover,
|
|
#discordURL:focus #discordSVG {
|
|
fill: #7288d9;
|
|
}
|
|
#discordSVG:active {
|
|
fill: #657ac4;
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* *
|
|
* Landing View (Bottom Styles) *
|
|
* *
|
|
******************************************************************************/
|
|
|
|
/* Style for a general label on the bottom of the landing view. */
|
|
.bot_label {
|
|
font-size: 9px;
|
|
letter-spacing: 1px;
|
|
font-weight: bold;
|
|
text-shadow: 0px 0px 0px #bebcbb;
|
|
}
|
|
|
|
/* Divider used on the bottom of the landing view. */
|
|
.bot_divider {
|
|
height: 25px;
|
|
width: 2px;
|
|
background: rgba(107, 105, 105, 0.7);
|
|
margin-left: 20px;
|
|
margin-right: 20px;
|
|
}
|
|
|
|
/* * *
|
|
* Landing View (Bottom Styles) | Left Content
|
|
* * */
|
|
|
|
/* Maintains maximum width on the status bar. */
|
|
#server_status_wrapper {
|
|
display: inline-flex;
|
|
width: 75px;
|
|
}
|
|
|
|
/* Span which displays the player count of the selected server. */
|
|
#player_count {
|
|
color: #949494;
|
|
font-size: 8px;
|
|
font-weight: 900;
|
|
text-shadow: 0px 0px 20px #949494;
|
|
margin-left: 10px;
|
|
}
|
|
|
|
/* Wrapper container for the mojang status bar. */
|
|
#mojangStatusWrapper {
|
|
position: relative;
|
|
display: flex;
|
|
cursor: pointer;
|
|
}
|
|
|
|
/* Icon which displays the status of the mojang services. */
|
|
#mojang_status_icon {
|
|
font-size: 30px;
|
|
color: #848484;
|
|
margin-left: 15px;
|
|
font-family: 'sans-serif';
|
|
}
|
|
|
|
/* Tooltip which displays more details about the mojang statuses. */
|
|
#mojangStatusTooltip {
|
|
position: absolute;
|
|
visibility: hidden;
|
|
opacity: 0;
|
|
width: 145px;
|
|
min-height: 150px;
|
|
background-color: rgba(0, 0, 0, 0.75);
|
|
color: #fff;
|
|
border-radius: 4px;
|
|
padding: 5px 10px;
|
|
z-index: 1;
|
|
font-family: 'Avenir Medium';
|
|
font-size: 12px;
|
|
transition: visibility 0s linear 0.25s, opacity 0.25s ease;
|
|
bottom: calc(100% + 15px);
|
|
transform: translateX(-50%);
|
|
margin-left: 50%;
|
|
box-shadow: 0px 0px 20px rgb(0, 0, 0);
|
|
cursor: default;
|
|
}
|
|
#mojangStatusTooltip:after {
|
|
content: " ";
|
|
position: absolute;
|
|
left: 50%;
|
|
top: 100%;
|
|
margin-left: -5px;
|
|
border-width: 5px;
|
|
border-style: solid;
|
|
border-color: rgba(0, 0, 0, 0.75) transparent transparent transparent;
|
|
}
|
|
#mojangStatusWrapper:hover #mojangStatusTooltip {
|
|
visibility: visible;
|
|
opacity: 1;
|
|
transition-delay: 0s;
|
|
}
|
|
|
|
/* Tooltip title for the mojang statuses. */
|
|
#mojangStatusTooltipTitle {
|
|
width: 100%;
|
|
text-align: center;
|
|
margin-bottom: 5px;
|
|
letter-spacing: 1px;
|
|
}
|
|
|
|
/* Wrapper container for the non essential services title. */
|
|
#mojangStatusNEContainer {
|
|
display: flex;
|
|
align-items: center;
|
|
margin: 10px 0px;
|
|
}
|
|
|
|
/* White bar which surrounds the non essential service title. */
|
|
.mojangStatusNEBar {
|
|
height: 1px;
|
|
width: 100%;
|
|
background: white;
|
|
}
|
|
|
|
/* Non essential service title text. */
|
|
#mojangStatusNETitle {
|
|
font-size: 10px;
|
|
padding: 0px 3px;
|
|
text-align: center;
|
|
letter-spacing: 1px;
|
|
}
|
|
|
|
/* Wrapper container for mojang service information. */
|
|
.mojangStatusContainer {
|
|
display: flex;
|
|
}
|
|
|
|
/* Displays the name of the mojang service. */
|
|
.mojangStatusName {
|
|
width: 100%;
|
|
font-size: 10px;
|
|
letter-spacing: 1px;
|
|
line-height: 12px;
|
|
padding: 6px 0px;
|
|
}
|
|
|
|
/* Displays the status of the mojang service. */
|
|
.mojangStatusIcon {
|
|
margin-right: 10px;
|
|
font-size: 18.5px;
|
|
color: #848484;
|
|
}
|
|
|
|
/* * *
|
|
* Landing View (Bottom Styles) | Center Content
|
|
* * */
|
|
|
|
/* Button which opens the news view. */
|
|
#newsButton {
|
|
background: none;
|
|
border: none;
|
|
cursor: pointer;
|
|
outline: none;
|
|
}
|
|
#newsButton:hover #newsButtonText,
|
|
#newsButton:focus #newsButtonText {
|
|
text-shadow: 0px 0px 20px #fff, 0px 0px 20px #fff;
|
|
}
|
|
#newsButton:active {
|
|
color: #c7c7c7;
|
|
text-shadow: 0px 0px 20px #c7c7c7, 0px 0px 20px #c7c7c7;
|
|
}
|
|
|
|
#newsButton:hover #newsButtonSVG,
|
|
#newsButton:focus #newsButtonSVG {
|
|
-webkit-filter: drop-shadow(0px 0px 2px #fff);
|
|
}
|
|
#newsButton:active #newsButtonSVG .arrowLine {
|
|
stroke: #c7c7c7;
|
|
}
|
|
#newsButton:active #newsButtonSVG {
|
|
-webkit-filter: drop-shadow(0px 0px 2px #c7c7c7);
|
|
}
|
|
#newsButton:disabled #newsButtonSVG .arrowLine {
|
|
stroke: rgba(255, 255, 255, 0.75);
|
|
}
|
|
|
|
/* Arrow image which floats above the news button. */
|
|
#newsButtonSVG {
|
|
height: 11px;
|
|
margin-left: -2px;
|
|
transition: 0.25s ease;
|
|
}
|
|
|
|
/* Span which contains the news button text. */
|
|
#newsButtonText {
|
|
color: white;
|
|
font-weight: 900;
|
|
letter-spacing: 2px;
|
|
text-shadow: 0px 0px 0px #bebcbb;
|
|
font-size: 11px;
|
|
line-height: 30px;
|
|
display: flex;
|
|
transition: 0.25s ease;
|
|
}
|
|
|
|
/* * *
|
|
* Landing View (Bottom Styles) | Right Content
|
|
* * */
|
|
|
|
/* Main launch content container. */
|
|
#landingContainer > #lower > #right #launch_content {
|
|
position: relative;
|
|
top: 25px;
|
|
display: inline-flex;
|
|
}
|
|
|
|
/* The launch button. */
|
|
#launch_button {
|
|
background: none;
|
|
border: none;
|
|
cursor: pointer;
|
|
font-weight: 900;
|
|
letter-spacing: 2px;
|
|
text-shadow: 0px 0px 0px #bebcbb;
|
|
font-size: 20px;
|
|
padding: 0px;
|
|
transition: 0.25s ease;
|
|
outline: none;
|
|
}
|
|
#launch_button:hover,
|
|
#launch_button:focus {
|
|
text-shadow: 0px 0px 20px #fff, 0px 0px 20px #fff;
|
|
}
|
|
#launch_button:active {
|
|
color: #c7c7c7;
|
|
text-shadow: 0px 0px 20px #c7c7c7, 0px 0px 20px #c7c7c7;
|
|
}
|
|
#launch_button:disabled {
|
|
color: #c7c7c7;
|
|
cursor: default;
|
|
pointer-events: none;
|
|
}
|
|
|
|
/* Launch details main container, hidden until launch processing begins. */
|
|
#launch_details {
|
|
position: relative;
|
|
top: 25px;
|
|
display: none;
|
|
}
|
|
|
|
/* Left side of launch details container, displays percentage and a divider. */
|
|
#launch_details_left {
|
|
display: flex;
|
|
}
|
|
|
|
/* Span which displays percentage complete. */
|
|
#launch_progress_label {
|
|
font-weight: 900;
|
|
letter-spacing: 1px;
|
|
text-shadow: 0px 0px 0px #bebcbb;
|
|
font-size: 20px;
|
|
min-width: 53.21px;
|
|
max-width: 53.21px;
|
|
text-align: right;
|
|
}
|
|
|
|
/* Right side of launch details container, displays progress bar and details. */
|
|
#launch_details_right {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
}
|
|
|
|
/* Button which opens the server selection view. */
|
|
#server_selection_button {
|
|
background: none;
|
|
border: none;
|
|
outline: none;
|
|
cursor: pointer;
|
|
line-height: 24px;
|
|
padding: 0px;
|
|
transition: 0.25s ease;
|
|
}
|
|
#server_selection_button:hover,
|
|
#server_selection_button:focus {
|
|
text-shadow: 0px 0px 20px #fff, 0px 0px 20px #fff, 0px 0px 20px #fff;
|
|
}
|
|
#server_selection_button:active {
|
|
color: #c7c7c7;
|
|
text-shadow: 0px 0px 20px #c7c7c7, 0px 0px 20px #c7c7c7, 0px 0px 20px #c7c7c7;
|
|
}
|
|
|
|
/* Progress bar styles. */
|
|
#launch_progress[value] {
|
|
height: 3px;
|
|
width: 265px;
|
|
-webkit-appearance: none;
|
|
}
|
|
#launch_progress[value]::-webkit-progress-bar {
|
|
background-color: transparent;
|
|
}
|
|
#launch_progress[value]::-webkit-progress-value {
|
|
background-color: #fff;
|
|
}
|
|
|
|
/* Span which displays information about the status of the launch process. */
|
|
#launch_details_text {
|
|
font-size: 11px;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* *
|
|
* Overlay View (overlay.ejs) *
|
|
* *
|
|
******************************************************************************/
|
|
|
|
/* * *
|
|
* Overlay View (Main Content)
|
|
* * */
|
|
|
|
/* Overlay container, placed over the main div. */
|
|
#overlayContainer {
|
|
position: absolute;
|
|
z-index: 500;
|
|
top: 22px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 100%;
|
|
height: calc(100% - 22px);
|
|
background: rgba(0, 0, 0, 0.50);
|
|
}
|
|
|
|
/* Main overlay content. */
|
|
#overlayContent {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
/*justify-content: space-between;*/
|
|
width: 300px;
|
|
/*height: 35%;*/
|
|
box-sizing: border-box;
|
|
padding: 15px 0px;
|
|
/* background-color: #424242; */
|
|
text-align: center;
|
|
}
|
|
|
|
/* Main overlay content anchor styles. */
|
|
#overlayContent a,
|
|
#overlayDismiss {
|
|
color: rgba(202, 202, 202, 0.75);
|
|
transition: 0.25s ease;
|
|
}
|
|
#overlayContent a:hover,
|
|
#overlayContent a:focus,
|
|
#overlayDismiss:focus {
|
|
color: rgba(255, 255, 255, 0.75);
|
|
}
|
|
#overlayContent a:active,
|
|
#overlayDismiss:active {
|
|
color: rgba(165, 165, 165, 0.75);
|
|
}
|
|
|
|
/* Add spacing between overlay content elements. */
|
|
#overlayContent > *:first-child {
|
|
margin-top: 0px !important;
|
|
}
|
|
#overlayContent > *:last-child {
|
|
margin-bottom: 0px !important;
|
|
}
|
|
#overlayContent > * {
|
|
margin: 8px 0px;
|
|
}
|
|
|
|
/* Overlay title styles. */
|
|
#overlayTitle {
|
|
font-family: 'Avenir Medium';
|
|
font-size: 20px;
|
|
font-weight: bold;
|
|
letter-spacing: 1px;
|
|
}
|
|
|
|
/* Overlay description styles. */
|
|
#overlayDesc {
|
|
font-size: 12px;
|
|
font-weight: bold;
|
|
}
|
|
|
|
/* Div which contains action buttons. */
|
|
#overlayActionContainer {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
}
|
|
|
|
/* Overlay acknowledge button styles. */
|
|
#overlayAcknowledge {
|
|
background: none;
|
|
border: 1px solid #ffffff;
|
|
color: white;
|
|
font-family: 'Avenir Medium';
|
|
font-weight: bold;
|
|
border-radius: 2px;
|
|
padding: 0px 8.1px;
|
|
cursor: pointer;
|
|
transition: 0.25s ease;
|
|
}
|
|
#overlayAcknowledge:hover,
|
|
#overlayAcknowledge:focus {
|
|
box-shadow: 0px 0px 10px 0px #fff;
|
|
outline: none;
|
|
}
|
|
#overlayAcknowledge:active {
|
|
border-color: rgba(255, 255, 255, 0.75);
|
|
color: rgba(255, 255, 255, 0.75);
|
|
}
|
|
|
|
/* Overlay dismiss option styles. */
|
|
#overlayDismiss {
|
|
font-weight: bold;
|
|
font-size: 10px;
|
|
text-decoration: none;
|
|
padding-top: 2.5px;
|
|
background: none;
|
|
border: none;
|
|
outline: none;
|
|
cursor: pointer;
|
|
}
|
|
#overlayDismiss:hover {
|
|
color: rgba(255, 255, 255, 0.75);
|
|
}
|
|
#overlayDismiss:active {
|
|
color: rgba(165, 165, 165, 0.75);
|
|
}
|
|
|
|
/* * *
|
|
* Overlay View (Server + Account Selection Content)
|
|
* * */
|
|
|
|
/* Server selection content container. */
|
|
#serverSelectContent,
|
|
#accountSelectContent {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
height: 75%;
|
|
}
|
|
|
|
/* Server selection header. */
|
|
#serverSelectHeader,
|
|
#accountSelectHeader {
|
|
font-family: 'Avenir Medium';
|
|
font-size: 20px;
|
|
font-weight: bold;
|
|
color: #fff;
|
|
margin-bottom: 25px;
|
|
}
|
|
|
|
/* Wrapper div for the list of available servers. */
|
|
#serverSelectList,
|
|
#accountSelectList {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
max-height: 65%;
|
|
min-height: 40%;
|
|
}
|
|
|
|
/* Scrollable div which lists the available servers. */
|
|
#serverSelectListScrollable,
|
|
#accountSelectListScrollable {
|
|
padding: 0px 5px;
|
|
overflow-y: scroll;
|
|
}
|
|
#serverSelectListScrollable::-webkit-scrollbar,
|
|
#accountSelectListScrollable::-webkit-scrollbar {
|
|
width: 2px;
|
|
}
|
|
#serverSelectListScrollable::-webkit-scrollbar-track,
|
|
#accountSelectListScrollable::-webkit-scrollbar-track {
|
|
display: none;
|
|
}
|
|
#serverSelectListScrollable::-webkit-scrollbar-thumb,
|
|
#accountSelectListScrollable::-webkit-scrollbar-thumb {
|
|
border-radius: 10px;
|
|
box-shadow: inset 0 0 10px rgba(255, 255, 255, 0.50);
|
|
}
|
|
|
|
/* Content container for a server listing. */
|
|
.serverListing {
|
|
border: none;
|
|
padding: 0px;
|
|
width: 375px;
|
|
min-height: 60px;
|
|
display: flex;
|
|
justify-content: flex-start;
|
|
align-items: center;
|
|
opacity: 0.6;
|
|
transition: 0.25s ease;
|
|
cursor: pointer;
|
|
position: relative;
|
|
background: rgba(131, 131, 131, 0.25);
|
|
}
|
|
.serverListing[selected] {
|
|
cursor: default;
|
|
opacity: 1.0;
|
|
}
|
|
.serverListing:hover,
|
|
.serverListing:focus {
|
|
outline: none;
|
|
opacity: 1.0;
|
|
}
|
|
|
|
.accountListing {
|
|
color: white;
|
|
border: 1px solid rgba(170, 170, 170, 0.5);
|
|
border-radius: 4px;
|
|
padding: 5px 45px;
|
|
width: 250px;
|
|
display: flex;
|
|
justify-content: flex-start;
|
|
align-items: center;
|
|
opacity: 0.6;
|
|
transition: 0.25s ease;
|
|
cursor: pointer;
|
|
position: relative;
|
|
background: rgba(255, 255, 255, 0.25);
|
|
}
|
|
.accountListing[selected] {
|
|
cursor: default;
|
|
opacity: 1.0;
|
|
}
|
|
.accountListing:hover,
|
|
.accountListing:focus {
|
|
outline: none;
|
|
opacity: 1.0;
|
|
}
|
|
|
|
.accountListingName {
|
|
display: flex;
|
|
height: 100%;
|
|
width: 100%;
|
|
padding-left: 10px;
|
|
}
|
|
|
|
/* Add spacing between server listings. */
|
|
#serverSelectListScrollable > .serverListing:not(:first-child):not(:last-child),
|
|
#accountSelectListScrollable > .accountListing:not(:first-child):not(:last-child) {
|
|
margin: 5px 0px;
|
|
}
|
|
#serverSelectListScrollable > .serverListing:first-child,
|
|
#accountSelectListScrollable > .accountListing:first-child {
|
|
margin-bottom: 5px;
|
|
}
|
|
#serverSelectListScrollable > .serverListing:last-child,
|
|
#accountSelectListScrollable > .accountListing:last-child {
|
|
margin-top: 5px;
|
|
}
|
|
|
|
/* Server listing image. */
|
|
.serverListingImg {
|
|
margin: 0px 10px 0px 5px;
|
|
border: 1px solid #fff;
|
|
height: 50px;
|
|
width: 50px;
|
|
}
|
|
|
|
/* Content container for the server listing's details. */
|
|
.serverListingDetails {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
height: 50px;
|
|
}
|
|
|
|
/* The name of the server listing. */
|
|
.serverListingName {
|
|
font-size: 14px;
|
|
font-weight: bold;
|
|
}
|
|
|
|
/* Description for the server listing. */
|
|
.serverListingDescription {
|
|
font-size: 10px;
|
|
line-height: 10px;
|
|
font-weight: bold;
|
|
}
|
|
|
|
/* Content container for the server listing's information. */
|
|
.serverListingInfo {
|
|
width: 100%;
|
|
display: flex;
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
/* The minecraft version of the server listing. */
|
|
.serverListingVersion {
|
|
font-size: 10px;
|
|
text-align: center;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
line-height: 12px;
|
|
height: 12px;
|
|
border-radius: 2px;
|
|
background: rgba(31, 140, 11, 0.8);
|
|
padding: 0px 2px;
|
|
}
|
|
|
|
/* The revision version of the server's manifest. */
|
|
.serverListingRevision {
|
|
color: #969696;
|
|
font-size: 10px;
|
|
line-height: 12px;
|
|
padding: 0px 5px;
|
|
}
|
|
|
|
/* Star which indicates the default (main) server. */
|
|
.serverListingStarWrapper {
|
|
display: flex;
|
|
align-items: center;
|
|
cursor: pointer;
|
|
height: 12px;
|
|
position: relative;
|
|
}
|
|
/* Tooltip which displays when hovering over the star. */
|
|
.serverListingStarTooltip {
|
|
visibility: hidden;
|
|
opacity: 0;
|
|
width: 65px;
|
|
background-color: rgba(0, 0, 0, 0.40);
|
|
text-align: center;
|
|
border-radius: 4px;
|
|
position: absolute;
|
|
z-index: 1;
|
|
left: 130%;
|
|
font-size: 10px;
|
|
transition: visibility 0s linear 0.25s, opacity 0.25s ease;
|
|
}
|
|
.serverListingStarTooltip::after {
|
|
content: " ";
|
|
position: absolute;
|
|
top: 50%;
|
|
right: 100%; /* To the left of the tooltip */
|
|
margin-top: -5px;
|
|
border-width: 5px;
|
|
border-style: solid;
|
|
border-color: transparent rgba(0, 0, 0, 0.40) transparent transparent;
|
|
}
|
|
.serverListingStarWrapper:hover .serverListingStarTooltip {
|
|
visibility: visible;
|
|
opacity: 1;
|
|
transition-delay:0s;
|
|
}
|
|
|
|
/* Content container which contains the server select actions. */
|
|
#serverSelectActions,
|
|
#accountSelectActions {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
margin-top: 25px;
|
|
}
|
|
|
|
/* Server selection confirm button styles. */
|
|
#serverSelectConfirm,
|
|
#accountSelectConfirm {
|
|
background: none;
|
|
border: 1px solid #ffffff;
|
|
color: white;
|
|
font-family: 'Avenir Medium';
|
|
font-weight: bold;
|
|
border-radius: 2px;
|
|
padding: 0px 8.1px;
|
|
cursor: pointer;
|
|
transition: 0.25s ease;
|
|
min-height: 20.67px;
|
|
}
|
|
#serverSelectConfirm:hover,
|
|
#serverSelectConfirm:focus,
|
|
#accountSelectConfirm:hover,
|
|
#accountSelectConfirm:focus {
|
|
box-shadow: 0px 0px 10px 0px #fff;
|
|
outline: none;
|
|
}
|
|
#serverSelectConfirm:active,
|
|
#accountSelectConfirm:active {
|
|
border-color: rgba(255, 255, 255, 0.75);
|
|
color: rgba(255, 255, 255, 0.75);
|
|
}
|
|
|
|
/* Server selection cancel button styles. */
|
|
#serverSelectCancel,
|
|
#accountSelectCancel {
|
|
font-weight: bold;
|
|
font-size: 10px;
|
|
text-decoration: none;
|
|
padding-top: 2.5px;
|
|
color: rgba(202, 202, 202, 0.75);
|
|
transition: 0.25s ease;
|
|
background: none;
|
|
border: none;
|
|
outline: none;
|
|
cursor: pointer;
|
|
}
|
|
#serverSelectCancel:hover,
|
|
#serverSelectCancel:focus,
|
|
#accountSelectCancel:hover,
|
|
#accountSelectCancel:focus {
|
|
color: rgba(255, 255, 255, 0.75);
|
|
}
|
|
#serverSelectCancel:active,
|
|
#accountSelectCancel:active {
|
|
color: rgba(165, 165, 165, 0.75);
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* *
|
|
* Loading Element (app.ejs) *
|
|
* *
|
|
******************************************************************************/
|
|
|
|
/* Loading container, placed above everything. */
|
|
#loadingContainer {
|
|
position: absolute;
|
|
z-index: 400;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 100%;
|
|
height: calc(100% - 22px);
|
|
}
|
|
|
|
/* Loading content container. */
|
|
#loadingContent {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
/* Spinner container. */
|
|
#loadSpinnerContainer {
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
/* Stationary image for the spinner. */
|
|
#loadCenterImage {
|
|
position: absolute;
|
|
width: 277px;
|
|
height: auto;
|
|
}
|
|
|
|
/* Rotating image for the spinner. */
|
|
#loadSpinnerImage {
|
|
width: 280px;
|
|
height: auto;
|
|
z-index: 400;
|
|
}
|
|
|
|
/* Rotating animation for the spinner. */
|
|
@keyframes rotating {
|
|
from {
|
|
transform: rotate(0deg);
|
|
}
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
/* Class which is applied when the spinner image is spinning. */
|
|
.rotating {
|
|
animation: rotating 10s linear infinite;
|
|
} |