1
0
Fork 0
mirror of https://github.com/marcrobledo/RomPatcher.js.git synced 2025-06-27 16:25:54 +00:00
RomPatcher.js/webapp/style.css

637 lines
15 KiB
CSS

/* Rom Patcher JS CSS template by Marc Robledo v20220323 */
/* @FONT-FACES */
@import url('https://fonts.googleapis.com/css?family=Open+Sans:400,700');
@import url('https://fonts.googleapis.com/css?family=Roboto+Mono:300');
body{
--rom-patcher-color-background:#31343a;
--rom-patcher-color-primary:#2a9ca5;
--rom-patcher-color-primary-hover:#3aacb5;
--rom-patcher-color-primary-active:#297b81;
--rom-patcher-color-primary-focus:#a8fff3;
--rom-patcher-color-danger:#ff0030;
--rom-patcher-color-warning:#ff7800;
--rom-patcher-color-spinner:#41bdc7;
--rom-patcher-color-muted:#888;
--rom-patcher-color-outer-btn:#fff;
--rom-patcher-color-outer-btn-hover:#2b2e33;
--rom-patcher-color-footer:#767b86;
--rom-patcher-color-footer-link:#969ba6;
--rom-patcher-color-footer-link-border:#464b56;
--rom-patcher-color-footer-hover:#fff;
--rom-patcher-color-footer-hover-border:#41d5ff;
--rom-patcher-color-switch:#fff;
--rom-patcher-color-switch-background:#474c56;
--rom-patcher-color-switch-background-enabled:#41bdc7;
margin:0;
font:15px 'Open Sans',sans-serif;
cursor:default;
line-height:1.8;
background-color:var(--rom-patcher-color-background);
color:#3c3c3c;
-moz-user-select:none;
-webkit-user-select: none;
-ms-user-select:none;
-o-user-select:none;
user-select:none;
}
/* body.dragging-files{
color:red !important;
pointer-events: none;
} */
/* flex main column */
html, body{height:100%}
#column{
display: flex;
flex-wrap: nowrap;
height: 100%;
flex-direction: column;
}
header{margin: 1% 0 4%}
header h1{display:none}
footer{padding: 50px 0 20px}
#wrapper{flex-basis:100%}
.clickable{cursor:pointer}
.hide{display:none !important}
.text-center{text-align:center}
.text-right{text-align:right}
.text-truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m-b{margin-bottom:8px}
/* flex box */
.row{
display:flex;
flex-flow:row wrap; /* this is the same as flex-direction:row;flex-wrap:wrap; */
align-items:center; /* vertical align */
justify-content:space-between
}
.row>div:first-child{width:25%}
.row>div:last-child{width:73%}
.row.row-lg>div:first-child{width:70%}
.row.row-lg>div:last-child{width:30%}
/* icons */
.icon{
display:inline-block;
vertical-align:middle;
width:16px;height:16px
}
/* header+footer */
header{text-align:center}
header h1{margin:0}
header img{max-width:90%; height:192px;}
footer{
text-align:center;
color:var(--rom-patcher-color-footer);
font-size:85%;
}
footer a{
color:var(--rom-patcher-color-footer-link);
text-decoration:none;
border-bottom:1px solid var(--rom-patcher-color-footer-link-border);
}
footer a:hover{
color:var(--rom-patcher-color-footer-hover);
border-color:var(--rom-patcher-color-footer-hover-border);
}
hr{border:none;border-top:1px dotted #bbb;margin:15px 0}
/* outer buttons */
.btn-transparent{
background-color:transparent;
color:var(--rom-patcher-color-outer-btn);
cursor:pointer;
text-align:center;
}
.btn-transparent:hover,.btn-transparent:focus{
background-color:var(--rom-patcher-color-outer-btn-hover);
cursor:pointer;
}
.btn-transparent img{
height:16px;
display:inline-block;
vertical-align:middle;
}
/* Switch mode */
#switch-container{
text-align:right;
margin-bottom:10px;
font-size:88%;
}
#switch-create-button{
border-radius:2px;
padding: 6px 8px;
transition:background-color .1s;
}
.switch{
display:inline-block;
vertical-align:middle;
width:30px;height:16px;
border-radius:8px;
position:relative;
transition:background-color .2s;
background-color:#babfbf;
}
#switch-create-button .switch.disabled{background-color:var(--rom-patcher-color-switch-background);}
#dialog-settings>.rom-patcher-dialog .switch{transition:opacity .1s;}
#dialog-settings>.rom-patcher-dialog .switch:hover{cursor:pointer;opacity:.7}
.switch:before{
position:absolute;
background-color:var(--rom-patcher-color-switch);
height:10px;width:10px;
content:" ";
border-radius:6px;
top:3px;
left:4px;
transition:left .2s;
}
.switch.enabled:before{
left:16px;
}
.switch.enabled{background-color:var(--rom-patcher-color-switch-background-enabled);}
.tab{background-color:#f9fafa;padding:30px 15px;border-radius: 3px}
.buttons{
margin-top:12px;
}
/* forms */
input[type=file], input[type=text], input[type=checkbox], select{
box-sizing:border-box;
max-width:100%;
font-family:inherit;
font-size:100%;
outline:none;
border:none;
border-radius:3px;
background-color:#edefef;
}
input[type=file]:focus:not(:disabled),
input[type=text]:focus:not(:disabled),
select:focus:not(:disabled),
input[type=checkbox].styled:focus:not(:disabled){
box-shadow: var(--rom-patcher-color-primary-focus) 0 0 0 2px;
}
#rom-patcher-container input[type=file],
#rom-patcher-container select,
#patch-builder-container input[type=file],
#patch-builder-container input[type=text]
{width:100%}
input[type=file],input[type=text]{padding:6px 10px}
#patch-builder-container-metadata-inputs input[type=text]:not(:last-child){margin-bottom:8px;}
input[type=file].no-file-selector-button::file-selector-button{display:none}
select{
padding:6px 18px 6px 10px;
-webkit-appearance:none;
-moz-appearance:none;
appearance:none;
text-overflow:'';
background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+");
background-position:100% center;
background-repeat:no-repeat;
}
select::-ms-expand{display:none}
input[type=file]:hover:not(:disabled),input[type=text]:hover:not(:disabled),select:hover:not(:disabled){background-color:#dee1e1}
input[type=file]:hover:not(:disabled),select:hover:not(:disabled){cursor:pointer;}
input[type=file]:disabled,select:disabled{color:var(--rom-patcher-color-muted)}
/* select:focus > option{background-color:#fff} */
input[type=file].empty,
input[type=file]:not(:disabled):not(.empty):hover{
padding-left:32px;
background-repeat: no-repeat;
background-position: 8px center;
background-size: 16px;
background-image: url(../rom-patcher-js/assets/icon_upload.svg);
}
input[type=file].valid{
background-color:#d6ffc8;
padding-right:28px;
background-repeat: no-repeat;
background-position: right 12px center;
background-size: 16px;
background-image: url(../rom-patcher-js/assets/icon_check_circle_green.svg);
}
input[type=file].valid:not(:disabled):not(.empty):hover{
background-color:#adf795;
background-position: 8px center, right 12px center;
background-size: 16px, 16px;
background-image: url(../rom-patcher-js/assets/icon_upload.svg), url(../rom-patcher-js/assets/icon_check_circle_green.svg);
}
input[type=file].invalid{
background-color:#ffc8c8;
padding-right:28px;
background-repeat: no-repeat;
background-position: right 12px center;
background-size: 16px;
background-image: url(../rom-patcher-js/assets/icon_x_circle_red.svg);
}
input[type=file].invalid:not(:disabled):not(.empty):hover{
background-color:#ffa3a3;
background-position: 8px center, right 12px center;
background-size: 16px, 16px;
background-image: url(../rom-patcher-js/assets/icon_upload.svg), url(../rom-patcher-js/assets/icon_x_circle_red.svg);
}
/* buttons */
button{
font-family:inherit;
font-size:100%;
min-width:120px;
border-radius:3px;border:0;
outline:none;
padding:10px 20px;
margin:0 5px;
background-color:var(--rom-patcher-color-primary);
color:white;
transition:background-color .15s;
box-sizing:border-box
}
button:not(:disabled){
cursor:pointer;
}
button:disabled{opacity:.35 !important;cursor:not-allowed}
.tab button:not(:disabled):hover{
background-color:var(--rom-patcher-color-primary-hover);
}
.tab button:not(:disabled):active{
background-color:var(--rom-patcher-color-primary-active);
transform:translateY(1px)
}
.text-selectable{
-moz-user-select:text;
-webkit-user-select: text;
-ms-user-select:text;
-o-user-select:text;
user-select:text;
cursor:text;
}
.text-mono{
font-family:'Roboto Mono', monospace;
color: var(--rom-patcher-color-muted);
font-size:12px;
}
.text-muted{
color: var(--rom-patcher-color-muted);
}
#rom-patcher-span-crc32 span.clickable{text-decoration:underline}
#rom-patcher-span-crc32 span.clickable:hover{cursor:pointer;color:black}
#rom-patcher-row-info-rom,
#rom-patcher-row-alter-header,
#rom-patcher-row-patch-description,
#rom-patcher-row-patch-requirements,
#rom-patcher-row-error-message,
#patch-builder-row-error-message{
display:none
}
#rom-patcher-row-info-rom.show,
#rom-patcher-row-alter-header.show,
#rom-patcher-row-patch-description.show,
#rom-patcher-row-patch-requirements.show{
display:flex
}
#rom-patcher-row-error-message.show,
#patch-builder-row-error-message.show{
display:block
}
#rom-patcher-patch-description{font-size: 85%;}
#rom-patcher-select-file-patch{width:100%}
#rom-patcher-error-message,
#patch-builder-error-message {
color: var(--rom-patcher-color-danger);
padding-left: 20px;
background-image: url(../rom-patcher-js/assets/icon_x_circle_red.svg);
background-repeat: no-repeat;
background-position: left center;
}
#rom-patcher-error-message.warning,
#patch-builder-error-message.warning {
color: var(--rom-patcher-color-warning);
background-image: url(../rom-patcher-js/assets/icon_alert_orange.svg);
}
/* loading spinner */
@-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } }
@-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }
@keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } }
.rom-patcher-spinner{
width:20px;
height:20px;
display:inline-block;
position:relative;
-webkit-animation:spin 1s linear infinite;
-moz-animation:spin 1s linear infinite;
animation:spin 1s ease-in-out infinite;
vertical-align:middle;
}
.rom-patcher-spinner:before{
width:6px;
height:6px;
background-color:var(--rom-patcher-color-spinner);
border-radius:3px;
display:inline-block;
content:"";
position:absolute;
top:0;
left:50%;
margin-left:-3px;
}
#rom-patcher-button-apply .rom-patcher-spinner:before{
background-color:white;
}
#wrapper{
box-sizing:border-box;
max-width:95%;
width:600px;
margin:0 auto
}
.rom-patcher-container-input{
position:relative
}
.rom-patcher-container-input input.loading,
.rom-patcher-container-input select.loading{
padding-left:32px;
}
.rom-patcher-container-input input.loading + .rom-patcher-spinner,
.rom-patcher-container-input select.loading + .rom-patcher-spinner{
position:absolute;
top:50%;
margin-top: -10px;
left:8px;
}
/* dialogs */
.rom-patcher-dialog::backdrop,
#rom-patcher-dialog-zip-backdrop{
background-color:rgba(0,0,0,.75);
backdrop-filter:blur(3px);
/*
transition: overlay 0.35s allow-discrete, display 0.35s allow-discrete, opacity 0.35s;
opacity: 0;
}
.rom-patcher-dialog[open]::backdrop {
opacity: 1;
@starting-style {
opacity: 0;
}
*/
}
#rom-patcher-dialog-zip-backdrop {
/* fallback for browsers not compatible with <dialog> */
justify-content: center;
align-items: center;
}
.rom-patcher-dialog{
vertical-align:middle;
margin:auto;
background-color:white;
color:#999;
box-sizing:border-box;
box-shadow:rgba(0,0,0,.7) 0 0 24px;
padding:20px;
border-radius:3px;
border:none;
/*
transition: overlay 0.35s allow-discrete, display 0.35s allow-discrete, opacity 0.35s;
opacity: 0;
}
.rom-patcher-dialog[open] {
opacity: 1;
@starting-style {
opacity: 0;
}
*/
}
/* settings dialog */
#dialog-settings{
min-width:400px;
max-width:90%;
}
#dialog-settings-button-close{
padding:8px;
border-radius:30px;
margin-right:-8px;
margin-top:-8px;
transition:background-color .2s;
height:24px;
}
#dialog-settings-button-close:hover{
cursor:pointer;
background-color:#f4f4f4;
}
input[type=checkbox].styled{
-moz-appearance:none;
-webkit-appearance:none;
appearance:none;
width: 20px;
height: 20px;
background-color:transparent;
border-radius:3px;
display:inline-block;
vertical-align:middle;
position:relative;
border: 2px solid var(--rom-patcher-color-primary);
background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMuMiIgZmlsbD0ibm9uZSIgZD0iTSAxLjE5LDcuMTAgNi4wNywxMi4wNiAxNC44OCwzLjMyIi8+PC9zdmc+');
background-repeat:no-repeat;
background-position:center center;
background-size:0px;
transition: background-color .2s, background-size .2s;
}
input[type=checkbox].styled:hover:not(:disabled){
cursor:pointer;
border-color:var(--rom-patcher-color-primary-hover);
}
input[type=checkbox].styled:hover:checked:not(:disabled){
background-color:var(--rom-patcher-color-primary-hover);
}
input[type=checkbox].styled:checked{
background-color:var(--rom-patcher-color-primary);
background-size:12px;
}
/* ZIP dialog */
#rom-patcher-dialog-zip{
min-width:360px;
}
#rom-patcher-dialog-zip-message{
text-align:center
}
#rom-patcher-dialog-zip-file-list{
list-style:none;
padding:0;
margin: 0;
max-height:300px;
overflow-y:auto;
}
#rom-patcher-dialog-zip-file-list li{
color:#3c3c3c;
padding: 2px 8px;
}
#rom-patcher-dialog-zip-file-list li:hover{
background-color:#eee;
cursor:pointer;
color: black;
border-radius: 3px;
}
/* light theme */
body.theme-light{
--rom-patcher-color-background:#eeeceb;
--rom-patcher-color-primary:#ff9f36;
--rom-patcher-color-primary-hover:#ffbe78;
--rom-patcher-color-primary-active:#ff8400;
--rom-patcher-color-primary-focus:#ffebb4;
--rom-patcher-color-spinner:#ff941e;
--rom-patcher-color-outer-btn:#575b66;
--rom-patcher-color-outer-btn-hover:#e6e3e1;
--rom-patcher-color-footer:#a89d97;
--rom-patcher-color-footer-link:#8c817c;
--rom-patcher-color-footer-link-border:#e3d4cc;
--rom-patcher-color-footer-hover:#484543;
--rom-patcher-color-footer-hover-border:#ffac41;
--rom-patcher-color-switch:#fff;
--rom-patcher-color-switch-background:#cec5bd;
--rom-patcher-color-switch-background-enabled:#ff941e;
}
body.theme-light header img{filter: hue-rotate(98rad) brightness(97.9%) saturate(160%)}
body.theme-light footer img.icon.settings, body.theme-light footer img.icon.github{filter: invert(0%) brightness(30%);}
/* pastel theme */
body.theme-pastel{
--rom-patcher-color-background:#1d2433;
--rom-patcher-color-primary:#e65a53;
--rom-patcher-color-primary-hover:#f4736d;
--rom-patcher-color-primary-active:#d9413a;
--rom-patcher-color-spinner:#ff941e;
--rom-patcher-color-outer-btn:#fff;
--rom-patcher-color-outer-btn-hover:#2b2e33;
--rom-patcher-color-footer:#767b86;
--rom-patcher-color-footer-link:#969ba6;
--rom-patcher-color-footer-link-border:#464b56;
--rom-patcher-color-footer-hover:#fff;
--rom-patcher-color-footer-hover-border:#41d5ff;
/* to-do */
}
body.theme-pastel header img{filter: hue-rotate(22rad) brightness(81.9%) saturate(228%)}
/*
body.theme-pastel .switch.enabled{background-color:#;}
body.theme-pastel #switch-create.disabled{background-color:#cec5bd;}
body.theme-pastel .spinner:before{background-color:#ff941e}
*/
/* responsive */
@media only screen and (max-width:641px){
#wrapper{font-size:14px}
#rom-patcher-rom-info{font-size:11px}
header img{max-height:96px}
#dialog-settings, #rom-patcher-dialog-zip{min-width: auto;}
}