From ab0fcb50b3c662829eeecc435e8d54cbc94aff5c Mon Sep 17 00:00:00 2001
From: thecozies <79979276+thecozies@users.noreply.github.com>
Date: Mon, 17 Aug 2026 16:52:18 -0500
Subject: [PATCH] Utilize horizontal-gradient for launcher and added anims
---
assets/recomp.rcss | 2512 +----------------------------------------
lib/RecompFrontend | 2 +-
src/main/launcher.cpp | 122 +-
3 files changed, 122 insertions(+), 2514 deletions(-)
diff --git a/assets/recomp.rcss b/assets/recomp.rcss
index 4aa0135..a6daef7 100644
--- a/assets/recomp.rcss
+++ b/assets/recomp.rcss
@@ -1,2512 +1,6 @@
-/* stylelint-disable color-no-hex, color-hex-length */
-h1 {
- font-size: 68dp;
- letter-spacing: 4.76dp;
- line-height: 68dp;
- font-style: normal;
- font-weight: 700;
-}
-
-h2 {
- font-size: 52dp;
- letter-spacing: 3.64dp;
- line-height: 52dp;
- font-style: normal;
- font-weight: 700;
-}
-
-h3, .tab {
- font-size: 36dp;
- letter-spacing: 2.52dp;
- line-height: 36dp;
- font-style: normal;
- font-weight: 700;
-}
-
-.label-lg, .menu-list-item__label, .button--large {
- font-size: 36dp;
- letter-spacing: 3.96dp;
- line-height: 36dp;
- font-style: normal;
- font-weight: 700;
-}
-
-.label-md, .config-debug-option__label, .button, .config-option__title, .config-option--hz .config-option__title, .config-group__title, .control-option__label {
- font-size: 28dp;
- letter-spacing: 3.08dp;
- line-height: 28dp;
- font-style: normal;
- font-weight: 700;
-}
-
-.label-sm, .config-debug__select-wrapper .config-debug__select-label, .subtitle-title__disclaimer, .config-option__range-label, .config-option-range__label, .config-option__radio-tabs .config-option__tab-label,
-.config-option__list .config-option__tab-label, .centered-page__controls > label {
- font-size: 20dp;
- letter-spacing: 2.8dp;
- line-height: 20dp;
- font-style: normal;
- font-weight: 700;
- text-transform: uppercase;
-}
-
-.config-option__details {
- font-size: 18dp;
- letter-spacing: 2.52dp;
- line-height: 18dp;
- font-style: normal;
- font-weight: 400;
-}
-
-body, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .config-description__contents, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config__wrapper p {
- font-size: 20dp;
- letter-spacing: 0dp;
- line-height: 20dp;
- font-style: normal;
- font-weight: 400;
-}
-
-.toggle__icon {
- font-family: promptfont;
- font-size: 56dp;
- font-style: normal;
- font-weight: 400;
- line-height: 56dp;
-}
-
-.prompt-font {
- font-family: promptfont;
- font-size: 40dp;
- font-style: normal;
- font-weight: 400;
- line-height: 40dp;
-}
-
-.prompt-font-sm, .input-viz__mappings div {
- font-family: promptfont;
- font-size: 32dp;
- font-style: normal;
- font-weight: 400;
- line-height: 32dp;
-}
/*
-@include trans-colors;
+ In order for rml to parse the base style sheet and combine with this one, any style needs to at least be present.
+ If you add styles to this file later, you can clear the current contents of this file.
*/
-/*
-@include trans-colors-opa;
-*/
-/*
-@include trans-colors-svg;
-*/
-/*
-@include trans-colors-border;
-*/
-.nav-vert, .nav-dir, .nav-all, .config-debug__select-wrapper select selectbox option, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .toggle, .subtitle-title:not(:disabled, [disabled]), .menu-list-item:not(:disabled, [disabled]), .icon-button:not([disabled]), .button:not([disabled]), .button, .config-option-dropdown__select selectbox option, .config-option-dropdown__wrapper selectbox option, .config-option-textfield__select selectbox option, .config-option-textfield__wrapper selectbox option, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config-option__radio-tabs input.radio,
-.config-option__list input.radio, .config-option__radio-tabs .config-option__checkbox,
-.config-option__list .config-option__checkbox, .tab, .control-option__binding:not([disabled]) {
- nav-up: auto;
- nav-down: auto;
-}
-
-.nav-horiz, .nav-dir, .nav-all, .config-debug__select-wrapper select selectbox option, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .toggle, .subtitle-title:not(:disabled, [disabled]), .menu-list-item:not(:disabled, [disabled]), .icon-button:not([disabled]), .button:not([disabled]), .button, .config-option-dropdown__select selectbox option, .config-option-dropdown__wrapper selectbox option, .config-option-textfield__select selectbox option, .config-option-textfield__wrapper selectbox option, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config-option__radio-tabs input.radio,
-.config-option__list input.radio, .config-option__radio-tabs .config-option__checkbox,
-.config-option__list .config-option__checkbox, .tab, .control-option__binding:not([disabled]) {
- nav-right: auto;
- nav-left: auto;
-}
-
-.nav-foc, .nav-all, .config-debug__select-wrapper select selectbox option, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .toggle, .subtitle-title:not(:disabled, [disabled]), .menu-list-item:not(:disabled, [disabled]), .icon-button:not([disabled]), .button:not([disabled]), .button, .config-option-dropdown__select selectbox option, .config-option-dropdown__wrapper selectbox option, .config-option-textfield__select selectbox option, .config-option-textfield__wrapper selectbox option, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config-option__radio-tabs input.radio,
-.config-option__list input.radio, .config-option__radio-tabs .config-option__checkbox,
-.config-option__list .config-option__checkbox, .tab, .control-option__binding:not([disabled]) {
- focus: auto;
- tab-index: auto;
-}
-
-/*
-@include set-color(COLOR);
-*/
-/* stylelint-disable color-no-hex, color-hex-length */
-h1 {
- font-size: 68dp;
- letter-spacing: 4.76dp;
- line-height: 68dp;
- font-style: normal;
- font-weight: 700;
-}
-
-h2 {
- font-size: 52dp;
- letter-spacing: 3.64dp;
- line-height: 52dp;
- font-style: normal;
- font-weight: 700;
-}
-
-h3, .tab {
- font-size: 36dp;
- letter-spacing: 2.52dp;
- line-height: 36dp;
- font-style: normal;
- font-weight: 700;
-}
-
-.label-lg, .menu-list-item__label, .button--large {
- font-size: 36dp;
- letter-spacing: 3.96dp;
- line-height: 36dp;
- font-style: normal;
- font-weight: 700;
-}
-
-.label-md, .config-debug-option__label, .button, .config-option__title, .config-option--hz .config-option__title, .config-group__title, .control-option__label {
- font-size: 28dp;
- letter-spacing: 3.08dp;
- line-height: 28dp;
- font-style: normal;
- font-weight: 700;
-}
-
-.label-sm, .config-debug__select-wrapper .config-debug__select-label, .subtitle-title__disclaimer, .config-option__range-label, .config-option-range__label, .config-option__radio-tabs .config-option__tab-label,
-.config-option__list .config-option__tab-label, .centered-page__controls > label {
- font-size: 20dp;
- letter-spacing: 2.8dp;
- line-height: 20dp;
- font-style: normal;
- font-weight: 700;
- text-transform: uppercase;
-}
-
-.config-option__details {
- font-size: 18dp;
- letter-spacing: 2.52dp;
- line-height: 18dp;
- font-style: normal;
- font-weight: 400;
-}
-
-body, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .config-description__contents, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config__wrapper p {
- font-size: 20dp;
- letter-spacing: 0dp;
- line-height: 20dp;
- font-style: normal;
- font-weight: 400;
-}
-
-.toggle__icon {
- font-family: promptfont;
- font-size: 56dp;
- font-style: normal;
- font-weight: 400;
- line-height: 56dp;
-}
-
-.prompt-font {
- font-family: promptfont;
- font-size: 40dp;
- font-style: normal;
- font-weight: 400;
- line-height: 40dp;
-}
-
-.prompt-font-sm, .input-viz__mappings div {
- font-family: promptfont;
- font-size: 32dp;
- font-style: normal;
- font-weight: 400;
- line-height: 32dp;
-}
-
-/*
-@include trans-colors;
-*/
-/*
-@include trans-colors-opa;
-*/
-/*
-@include trans-colors-svg;
-*/
-/*
-@include trans-colors-border;
-*/
-.nav-vert, .nav-dir, .nav-all, .config-debug__select-wrapper select selectbox option, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .toggle, .subtitle-title:not(:disabled, [disabled]), .menu-list-item:not(:disabled, [disabled]), .icon-button:not([disabled]), .button:not([disabled]), .button, .config-option-dropdown__select selectbox option, .config-option-dropdown__wrapper selectbox option, .config-option-textfield__select selectbox option, .config-option-textfield__wrapper selectbox option, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config-option__radio-tabs input.radio,
-.config-option__list input.radio, .config-option__radio-tabs .config-option__checkbox,
-.config-option__list .config-option__checkbox, .tab, .control-option__binding:not([disabled]) {
- nav-up: auto;
- nav-down: auto;
-}
-
-.nav-horiz, .nav-dir, .nav-all, .config-debug__select-wrapper select selectbox option, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .toggle, .subtitle-title:not(:disabled, [disabled]), .menu-list-item:not(:disabled, [disabled]), .icon-button:not([disabled]), .button:not([disabled]), .button, .config-option-dropdown__select selectbox option, .config-option-dropdown__wrapper selectbox option, .config-option-textfield__select selectbox option, .config-option-textfield__wrapper selectbox option, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config-option__radio-tabs input.radio,
-.config-option__list input.radio, .config-option__radio-tabs .config-option__checkbox,
-.config-option__list .config-option__checkbox, .tab, .control-option__binding:not([disabled]) {
- nav-right: auto;
- nav-left: auto;
-}
-
-.nav-foc, .nav-all, .config-debug__select-wrapper select selectbox option, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .toggle, .subtitle-title:not(:disabled, [disabled]), .menu-list-item:not(:disabled, [disabled]), .icon-button:not([disabled]), .button:not([disabled]), .button, .config-option-dropdown__select selectbox option, .config-option-dropdown__wrapper selectbox option, .config-option-textfield__select selectbox option, .config-option-textfield__wrapper selectbox option, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config-option__radio-tabs input.radio,
-.config-option__list input.radio, .config-option__radio-tabs .config-option__checkbox,
-.config-option__list .config-option__checkbox, .tab, .control-option__binding:not([disabled]) {
- focus: auto;
- tab-index: auto;
-}
-
-/*
-@include set-color(COLOR);
-*/
-/* stylelint-disable color-no-hex */
-/* stylelint-disable selector-max-id */
-* {
- box-sizing: border-box;
-}
-
-hr {
- display: block;
- padding: 1.5dp;
- background: #08070D;
-}
-
-body {
- color: #fff;
- font-family: chiaro;
- font-size: 20dp;
- font-style: normal;
- font-weight: normal;
-}
-
-/* div {
- focus:none;
- tab-index:none;
-} */
-div#window {
- position: relative;
- box-sizing: border-box;
- width: 100%;
- height: 100%;
- border-color: rgba(255, 255, 255, 0.2);
- background-color: #121018;
-}
-
-div#content {
- z-index: 2;
- width: auto;
- height: 100%;
- overflow: hidden auto;
- text-align: center;
-}
-
-p {
- text-align: left;
-}
-
-input.submit {
- margin-left: 0;
-}
-
-input.text,
-input.password {
- box-sizing: border-box;
- height: 31dp;
- padding: 11dp 10dp 0;
- text-align: left;
- cursor: text;
-}
-
-textarea {
- padding: 14dp 12dp 10dp;
- text-align: left;
- cursor: text;
-}
-
-input.text,
-input.password,
-select,
-textarea {
- /* color: #333; */
- /* font-size: 13dp */
- height: auto;
-}
-
-table input.text {
- box-sizing: border-box;
- width: 100%;
- height: auto;
- /* height: 18dp; */
- margin: 0;
- border-width: 1.1dp;
- border-color: #000;
- background-color: #fff;
- font-size: 15dp;
- /* padding: 0 5dp; */
- line-height: 1;
- decorator: none;
- /* vertical-align: center; */
-}
-
-input.radio {
- flex: 0;
- width: 0dp;
- nav-up: auto;
- nav-right: auto;
- nav-down: auto;
- nav-left: auto;
- tab-index: auto;
- focus: auto;
-}
-
-input.checkbox {
- width: 20dp;
- height: 20dp;
- nav-up: auto;
- nav-right: auto;
- nav-down: auto;
- nav-left: auto;
- tab-index: auto;
- focus: auto;
-}
-
-scrollbarvertical, scrollbarhorizontal {
- margin: 0;
- border: 0;
-}
-scrollbarvertical slidertrack, scrollbarhorizontal slidertrack {
- background: #DABAF7;
- opacity: 0.05;
-}
-scrollbarvertical sliderbar, scrollbarhorizontal sliderbar {
- border-radius: 5dp;
- background: #DABAF7;
- opacity: 0.1;
-}
-scrollbarvertical sliderbar:hover:not(:active), scrollbarhorizontal sliderbar:hover:not(:active) {
- opacity: 0.2;
-}
-scrollbarvertical sliderbar:active, scrollbarhorizontal sliderbar:active {
- opacity: 0.3;
-}
-scrollbarvertical sliderarrowdec, scrollbarvertical sliderarrowinc, scrollbarhorizontal sliderarrowdec, scrollbarhorizontal sliderarrowinc {
- width: 0;
- height: 0;
-}
-
-scrollbarvertical {
- width: 12dp;
-}
-scrollbarvertical slidertrack {
- width: 12dp;
-}
-scrollbarvertical sliderbar {
- width: 12dp;
-}
-
-scrollbarhorizontal {
- height: 12dp;
-}
-scrollbarhorizontal slidertrack {
- height: 12dp;
-}
-scrollbarhorizontal sliderbar {
- height: 12dp;
-}
-
-.centered-page {
- display: flex;
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- padding: 64dp;
- background-color: rgba(255, 255, 255, 0.1);
-}
-
-.centered-page__modal {
- display: flex;
- position: relative;
- flex: 1 1 100%;
- flex-direction: column;
- width: 100%;
- max-width: 1692.4444444444dp;
- height: 100%;
- margin: auto;
- border-width: 1.1dp;
- border-radius: 16dp;
- border-color: rgba(255, 255, 255, 0.2);
- background: rgba(8, 7, 13, 0.9);
-}
-.centered-page__modal > .tabs {
- display: flex;
- position: relative;
- flex: 1 1 100%;
- flex-direction: column;
- width: 100%;
- max-width: 1692.4444444444dp;
- height: 100%;
- margin: auto;
-}
-.centered-page__modal panels {
- flex: 1 1 100%;
-}
-
-.centered-page__controls {
- display: flex;
- position: absolute;
- bottom: 24dp;
- flex-direction: row;
- align-items: center;
- justify-content: center;
- width: 100%;
- max-width: 1692.4444444444dp;
- height: auto;
- margin: 0 auto;
-}
-.centered-page__controls > label {
- display: inline-block;
- align-items: center;
- justify-content: space-between;
- width: auto;
- height: 24dp;
-}
-.centered-page__controls > label:not(:last-child) {
- margin-right: 40dp;
-}
-.centered-page__controls > label > span:first-child {
- margin-right: 4dp;
-}
-
-.control-option {
- color: #CCCCCC;
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
- display: flex;
- position: relative;
- flex-direction: row;
- align-items: center;
- justify-content: space-between;
- width: 100%;
- height: auto;
- padding: 4dp 16dp 4dp 20dp;
- border-radius: 8dp;
- background-color: rgba(0, 0, 0, 0);
-}
-.control-option svg {
- image-color: #CCCCCC;
-}
-.control-option svg {
- transition: image-color 0.05s linear-in-out, background-color 0.05s linear-in-out;
-}
-.control-option:focus-visible:not(:disabled, [disabled]), .control-option:hover:not(:disabled, [disabled]) {
- color: #F2F2F2;
- background-color: rgba(190, 184, 219, 0.1);
-}
-.control-option:focus-visible:not(:disabled, [disabled]) svg, .control-option:hover:not(:disabled, [disabled]) svg {
- image-color: #F2F2F2;
-}
-.control-option:disabled, .control-option[disabled] {
- opacity: 0.5;
-}
-[cur-binding-slot="0"] .control-option--active .control-option__binding[bind-slot="0"] {
- border-color: #F86039;
-}
-[cur-binding-slot="0"] .control-option--active .control-option__binding[bind-slot="0"] .control-option__binding-icon {
- opacity: 0;
-}
-[cur-binding-slot="0"] .control-option--active .control-option__binding[bind-slot="0"] .control-option__binding-recording {
- opacity: 1;
-}
-[cur-binding-slot="1"] .control-option--active .control-option__binding[bind-slot="1"] {
- border-color: #F86039;
-}
-[cur-binding-slot="1"] .control-option--active .control-option__binding[bind-slot="1"] .control-option__binding-icon {
- opacity: 0;
-}
-[cur-binding-slot="1"] .control-option--active .control-option__binding[bind-slot="1"] .control-option__binding-recording {
- opacity: 1;
-}
-.control-option .icon-button {
- flex: 1 1 auto;
-}
-
-.control-option__label {
- flex: 2 1 300dp;
- height: auto;
- white-space: nowrap;
-}
-
-.control-option__bindings {
- display: flex;
- position: relative;
- flex: 2 1 400dp;
- flex-direction: row;
- align-items: center;
- justify-content: space-between;
- width: 100%;
- height: 56dp;
- padding: 0 12dp 0 4dp;
-}
-
-.control-option__binding {
- color: #CCCCCC;
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out, border-color 0.05s linear-in-out;
- display: flex;
- position: relative;
- flex: 1 1 100%;
- align-items: center;
- justify-content: center;
- width: 100%;
- height: 56dp;
- margin: 0 4dp;
- padding: 8dp;
- border-width: 1.1dp;
- border-radius: 8dp;
- border-color: rgba(190, 184, 219, 0.1);
- background-color: rgba(190, 184, 219, 0.1);
-}
-.control-option__binding svg {
- image-color: #CCCCCC;
-}
-.control-option__binding svg {
- transition: image-color 0.05s linear-in-out, background-color 0.05s linear-in-out;
-}
-.control-option__binding:focus, .control-option__binding:hover {
- color: #F2F2F2;
- border-color: #F2F2F2;
- background-color: rgba(255, 255, 255, 0.1);
-}
-.control-option__binding:focus svg, .control-option__binding:hover svg {
- image-color: #F2F2F2;
-}
-.control-option__binding:active {
- color: rgb(244.6, 244.6, 244.6);
-}
-.control-option__binding:active svg {
- image-color: rgb(244.6, 244.6, 244.6);
-}
-.control-option__binding:disabled, .control-option__binding[disabled] {
- color: #CCCCCC;
- opacity: 0.5;
-}
-.control-option__binding:disabled svg, .control-option__binding[disabled] svg {
- image-color: #CCCCCC;
-}
-.control-option__binding:not([disabled]) {
- cursor: pointer;
-}
-
-.control-option__binding-icon {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
- opacity: 1;
-}
-
-@keyframes control-option__binding-recording-scale {
- 0% {
- transform: scale(1);
- }
- 50% {
- transform: scale(0.85);
- }
- 100% {
- transform: scale(1);
- }
-}
-.control-option__binding-recording {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
- display: flex;
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- align-items: center;
- justify-content: center;
- opacity: 0;
-}
-.control-option__binding-recording .control-option__binding-circle {
- width: 24dp;
- height: 24dp;
- animation: 1.5s sine-in-out infinite control-option__binding-recording-scale;
- border-radius: 24dp;
- background-color: #F86039;
-}
-.control-option__binding-recording .control-option__binding-edge {
- position: absolute;
- top: 50%;
- left: 50%;
- width: 36dp;
- height: 36dp;
- transform: translate(-50%, -50%);
-}
-.control-option__binding-recording .control-option__binding-edge > svg.control-option__binding-edge-svg {
- width: 36dp;
- height: 36dp;
- image-color: #F86039;
-}
-
-/*
- Example:
-
- Graphics
-
-
-*/
-.tabs tabs {
- display: flex;
- flex-direction: row;
- align-items: center;
- justify-content: flex-start;
-}
-
-.tab {
- display: block;
- position: relative;
- margin: 0;
- padding: 20dp 24dp;
- opacity: 0.9;
- background-color: rgba(0, 0, 0, 0);
- color: rgba(255, 255, 255, 0.6);
-}
-.tab:selected {
- color: #F2F2F2;
-}
-.tab:selected .tab__indicator {
- background-color: rgba(255, 255, 255, 0.6);
-}
-.tab:selected:hover {
- cursor: default;
-}
-.rmlui-window:not([mouse-active]) .tab:focus {
- transition: none;
- animation: blue-pulse 0.75s infinite;
-}
-.rmlui-window:not([mouse-active]) .tab:focus:selected .tab__indicator {
- animation: blue-pulse-background 0.75s infinite;
-}
-.tab:focus, .tab:hover {
- opacity: 1;
- color: #F2F2F2;
- cursor: pointer;
-}
-
-.tab__indicator {
- position: absolute;
- right: 0;
- bottom: 2dp;
- left: 0;
- height: 2dp;
- background-color: rgba(0, 0, 0, 0);
-}
-
-.config__icon-buttons {
- display: flex;
- position: absolute;
- top: 8dp;
- right: 0dp;
- flex-direction: row;
- align-items: center;
- justify-content: flex-end;
- width: auto;
-}
-.config__icon-buttons .icon-button {
- margin: 0 8dp;
-}
-
-.config__form {
- border-top-width: 1.1dp;
- border-top-color: rgba(255, 255, 255, 0.1);
- display: flex;
- flex: 1 1 100%;
- flex-direction: column;
- justify-content: space-between;
- width: 100%;
- height: 100%;
- border-bottom-right-radius: 16dp;
- border-bottom-left-radius: 16dp;
-}
-
-.config__wrapper {
- flex: 1 1 100%;
- width: auto;
- height: auto;
- padding: 16dp;
- border-radius: 0dp;
- border-bottom-right-radius: 16dp;
- border-bottom-left-radius: 16dp;
- background-color: rgba(0, 0, 0, 0.35);
- text-align: left;
-}
-.config__wrapper p {
- padding: 16dp;
- line-height: 28dp;
- white-space: pre-line;
-}
-.config__wrapper p b {
- color: #B97DF2;
-}
-.config__wrapper p i {
- color: #E9CD35;
- font-style: normal;
-}
-
-.config__hz-wrapper {
- display: flex;
- flex: 1 1 100%;
- flex-direction: row;
- width: 100%;
- height: 100%;
- border-radius: 0dp;
- text-align: left;
-}
-
-.config__header, .config__footer {
- display: flex;
- align-items: center;
- justify-content: space-between;
- width: 100%;
- background-color: rgba(0, 0, 0, 0.35);
-}
-
-.config__header {
- border-bottom-width: 1.1dp;
- border-bottom-color: rgba(255, 255, 255, 0.1);
- padding: 12dp 20dp;
-}
-
-.config__footer {
- border-top-width: 1.1dp;
- border-top-color: rgba(255, 255, 255, 0.1);
- padding: 20dp 20dp;
- border-bottom-right-radius: 16dp;
- border-bottom-left-radius: 16dp;
-}
-
-.config__header-left {
- display: flex;
- flex: 1 1 auto;
- flex-direction: row;
-}
-.config__header-left > :not(:first-child) {
- margin-left: 8dp;
-}
-
-.config__row {
- display: flex;
- flex-direction: row;
-}
-
-.config-group {
- position: relative;
-}
-.config-group--scrollable {
- flex: 1 1 100%;
- width: auto;
- height: auto;
- padding: 0 0 0 16dp;
-}
-.config-group--scrollable .config-group__wrapper {
- max-height: 100%;
- overflow-y: auto;
-}
-.config-group__title {
- color: #B97DF2;
-}
-.config-group__title--hidden {
- display: none;
-}
-.config-group__wrapper {
- padding: 16dp 0;
-}
-
-.config-option {
- display: flex;
- flex: 1;
- flex-direction: column;
- align-items: flex-start;
- justify-content: flex-start;
- margin: 16dp 0dp 24dp;
-}
-.config-option--hz {
- flex-direction: row-reverse;
- align-items: center;
- margin-top: 4dp;
- margin-bottom: 4dp;
-}
-.config-option--hz .config-option__title {
- flex: 1 1 100%;
-}
-.config-option--hz .config-option__list {
- flex: 1 1 auto;
- width: auto;
-}
-.config-option--hz:first-child {
- margin-top: 0;
-}
-.config-option--hz:last-child {
- margin-bottom: 0;
-}
-
-.config-option__title {
- padding: 0 12dp;
-}
-
-.config-option__radio-tabs,
-.config-option__list {
- display: flex;
- flex-direction: row;
- align-items: flex-start;
- justify-content: flex-start;
- width: 100%;
- height: auto;
- padding: 0;
-}
-.config-option__radio-tabs input:first-of-type,
-.config-option__list input:first-of-type {
- nav-left: none;
-}
-.config-option__radio-tabs input:last-of-type,
-.config-option__list input:last-of-type {
- nav-right: none;
-}
-.config-option__radio-tabs .config-option__tab-label,
-.config-option__list .config-option__tab-label {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
- display: block;
- position: relative;
- height: auto;
- margin: 4dp 12dp 0;
- padding: 8dp 0;
- color: rgba(255, 255, 255, 0.6);
- tab-index: none;
-}
-.config-option__radio-tabs .config-option__tab-label:hover,
-.config-option__list .config-option__tab-label:hover {
- color: #F2F2F2;
- cursor: pointer;
-}
-.config-option__radio-tabs .config-option__checkbox-wrapper,
-.config-option__list .config-option__checkbox-wrapper {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
- width: 32dp;
- height: 32dp;
- margin: 4dp 12dp 0;
- border-radius: 8dp;
- opacity: 0.5;
- background-color: rgba(190, 184, 219, 0.1);
- cursor: pointer;
-}
-.config-option__radio-tabs .config-option__checkbox-wrapper:hover,
-.config-option__list .config-option__checkbox-wrapper:hover {
- opacity: 1;
-}
-.config-option__radio-tabs .config-option__checkbox-wrapper[checked],
-.config-option__list .config-option__checkbox-wrapper[checked] {
- background-color: #3333FF;
-}
-.config-option__radio-tabs .config-option__checkbox,
-.config-option__list .config-option__checkbox {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
- visibility: visible;
- width: 0;
- height: 0;
-}
-.config-option__radio-tabs input.radio,
-.config-option__list input.radio {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
- visibility: visible;
- width: 0;
- height: 0;
-}
-.config-option__radio-tabs input.radio:not(:disabled):checked + .config-option__tab-label,
-.config-option__list input.radio:not(:disabled):checked + .config-option__tab-label {
- border-bottom: 1dp;
- border-color: #F2F2F2;
- color: #F2F2F2;
-}
-.config-option__radio-tabs input.radio:not(:disabled):checked + .config-option__tab-label:hover,
-.config-option__list input.radio:not(:disabled):checked + .config-option__tab-label:hover {
- cursor: default;
-}
-.rmlui-window:not([mouse-active]) .config-option__radio-tabs input.radio:not(:disabled):focus + .config-option__tab-label,
-.rmlui-window:not([mouse-active]) .config-option__list input.radio:not(:disabled):focus + .config-option__tab-label {
- transition: none;
- animation: blue-pulse 0.75s infinite;
- border-color: #17D6E8;
- color: #17D6E8;
-}
-.config-option__radio-tabs input.radio:not(:disabled):focus + .config-option__tab-label, .config-option__radio-tabs input.radio:not(:disabled):hover + .config-option__tab-label,
-.config-option__list input.radio:not(:disabled):focus + .config-option__tab-label,
-.config-option__list input.radio:not(:disabled):hover + .config-option__tab-label {
- color: #F2F2F2;
-}
-.config-option__radio-tabs input.radio:disabled + .config-option__tab-label,
-.config-option__list input.radio:disabled + .config-option__tab-label {
- opacity: 0.5;
-}
-.config-option__radio-tabs input.radio:disabled + .config-option__tab-label:hover,
-.config-option__list input.radio:disabled + .config-option__tab-label:hover {
- cursor: default;
-}
-.config-option__radio-tabs input.range slidertrack,
-.config-option__list input.range slidertrack {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
- height: 2dp;
- margin-top: 8dp;
- background-color: rgba(255, 255, 255, 0.2);
-}
-.config-option__radio-tabs input.range sliderbar,
-.config-option__list input.range sliderbar {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
- width: 16dp;
- height: 16dp;
- margin-top: 1dp;
- margin-right: -8dp;
- margin-left: -8dp;
- transition: background-color 0.05s linear-in-out;
- border-radius: 8dp;
- background-color: #CCCCCC;
-}
-.rmlui-window:not([mouse-active]) .config-option__radio-tabs input.range sliderbar:focus,
-.rmlui-window:not([mouse-active]) .config-option__list input.range sliderbar:focus {
- border-width: 1.1dp;
- border-color: #3333FF;
- animation: blue-pulse-background 0.75s infinite;
-}
-.config-option__radio-tabs input.range sliderbar:hover,
-.config-option__list input.range sliderbar:hover {
- background-color: #F2F2F2;
- cursor: pointer;
-}
-.config-option__radio-tabs input.range sliderbar:active,
-.config-option__radio-tabs input.range slidertrack:active + sliderbar,
-.config-option__list input.range sliderbar:active,
-.config-option__list input.range slidertrack:active + sliderbar {
- background-color: #17D6E8;
-}
-.config-option__radio-tabs input.range sliderarrowdec,
-.config-option__radio-tabs input.range sliderarrowinc,
-.config-option__list input.range sliderarrowdec,
-.config-option__list input.range sliderarrowinc {
- display: none;
-}
-
-.config-option__details {
- height: 18dp;
- margin: 14dp 12dp 0;
- color: #B97DF2;
-}
-
-.config-option-color {
- width: 100%;
- max-width: 360dp;
- height: auto;
- margin-top: 4dp;
- margin-left: 12dp;
- padding: 0;
-}
-.config-option-color__preview-wrapper {
- display: flex;
- flex-direction: row;
- width: 100%;
- height: 72dp;
-}
-.config-option-color__preview-block {
- display: block;
- width: 88dp;
- height: 100%;
- border-width: 1.1dp;
- border-radius: 16dp;
- border-color: rgba(255, 255, 255, 0.2);
-}
-.config-option-color__hsv-wrapper {
- display: flex;
- flex: 1 1 100%;
- flex-direction: column;
- width: auto;
- height: auto;
- padding-left: 8dp;
-}
-.config-option-color__hsv-wrapper .config-option-range {
- flex: 1 1 auto;
-}
-.config-option-color__hsv-wrapper .config-option-range label {
- min-width: 72dp;
-}
-.config-option-color__hsv-wrapper .config-option-range input {
- flex: 1 1 auto;
-}
-
-.config-option-range {
- display: flex;
- flex-direction: row;
- align-items: flex-start;
- justify-content: flex-start;
- width: 100%;
- max-width: 360dp;
- height: auto;
- margin-top: 4dp;
- padding: 0;
-}
-.config-option-range__label {
- display: block;
- width: 56dp;
- margin: 0 12dp;
- margin-right: 16dp;
- padding: 0;
- color: #F2F2F2;
- tab-index: none;
-}
-.config-option-range__range-input {
- flex: 1;
-}
-.config-option-range__range-input slidertrack {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
- height: 2dp;
- margin-top: 8dp;
- background-color: rgba(255, 255, 255, 0.2);
-}
-.config-option-range__range-input sliderbar {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
- width: 16dp;
- height: 16dp;
- margin-top: 1dp;
- margin-right: -8dp;
- margin-left: -8dp;
- transition: background-color 0.05s linear-in-out;
- border-radius: 8dp;
- background-color: #CCCCCC;
-}
-.rmlui-window:not([mouse-active]) .config-option-range__range-input sliderbar:focus {
- border-width: 1.1dp;
- border-color: #3333FF;
- animation: blue-pulse-background 0.75s infinite;
-}
-.config-option-range__range-input sliderbar:hover {
- background-color: #F2F2F2;
- cursor: pointer;
-}
-.config-option-range__range-input sliderbar:active,
-.config-option-range__range-input slidertrack:active + sliderbar {
- background-color: #17D6E8;
-}
-.config-option-range__range-input sliderarrowdec,
-.config-option-range__range-input sliderarrowinc {
- display: none;
-}
-
-.config-option__range-wrapper {
- max-width: 360dp;
- margin-top: 4dp;
-}
-
-.config-option__range-label {
- display: block;
- width: 56dp;
- margin: 0 12dp;
- margin-right: 16dp;
- padding: 0;
- color: #F2F2F2;
- tab-index: none;
-}
-
-.config-option-dropdown, .config-option-textfield {
- display: flex;
- position: relative;
- flex: 1 1 100%;
- flex-direction: row;
- align-items: center;
- justify-content: flex-start;
- width: auto;
- height: auto;
- padding: 8dp 24dp 8dp 12dp;
-}
-.config-option-dropdown__select, .config-option-textfield__select {
- display: block;
- height: 48dp;
- padding: 14dp;
- cursor: pointer;
-}
-.config-option-dropdown__wrapper, .config-option-textfield__wrapper {
- display: flex;
- align-items: center;
- justify-content: flex-start;
- width: 100%;
- height: auto;
- padding: 2dp 0 12dp;
- cursor: text;
-}
-.config-option-dropdown__wrapper input, .config-option-textfield__wrapper input {
- width: 100%;
- height: auto;
- vertical-align: middle;
-}
-.config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out, border-color 0.05s linear-in-out;
- border-width: 1.1dp;
- border-color: rgba(255, 255, 255, 0.5);
- position: relative;
- box-sizing: border-box;
- flex: 1 1 100%;
- width: auto;
- border-radius: 12dp;
- background-color: rgba(255, 255, 255, 0.05);
-}
-.config-option-dropdown__select svg, .config-option-dropdown__wrapper svg, .config-option-textfield__select svg, .config-option-textfield__wrapper svg {
- transition: image-color 0.05s linear-in-out, background-color 0.05s linear-in-out;
-}
-.config-option-dropdown__select:hover, .config-option-dropdown__select:focus, .config-option-dropdown__wrapper:hover, .config-option-dropdown__wrapper:focus, .config-option-textfield__select:hover, .config-option-textfield__select:focus, .config-option-textfield__wrapper:hover, .config-option-textfield__wrapper:focus {
- border-width: 1.1dp;
- border-color: rgba(255, 255, 255, 0.8);
- background-color: rgba(255, 255, 255, 0.2);
-}
-.config-option-dropdown__select selectvalue, .config-option-dropdown__wrapper selectvalue, .config-option-textfield__select selectvalue, .config-option-textfield__wrapper selectvalue {
- display: inline;
- height: auto;
- margin: auto 0;
-}
-.config-option-dropdown__select selectbox, .config-option-dropdown__wrapper selectbox, .config-option-textfield__select selectbox, .config-option-textfield__wrapper selectbox {
- border-width: 1.1dp;
- border-color: rgba(255, 255, 255, 0.2);
- margin-top: 2dp;
- padding: 4dp 0;
- border-radius: 12dp;
- background-color: #191622;
-}
-.config-option-dropdown__select selectbox option, .config-option-dropdown__wrapper selectbox option, .config-option-textfield__select selectbox option, .config-option-textfield__wrapper selectbox option {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
- padding: 8dp 12dp;
- background-color: rgba(0, 0, 0, 0);
- color: #CCCCCC;
- font-weight: 400;
-}
-.config-option-dropdown__select selectbox option:hover, .config-option-dropdown__select selectbox option:focus, .config-option-dropdown__wrapper selectbox option:hover, .config-option-dropdown__wrapper selectbox option:focus, .config-option-textfield__select selectbox option:hover, .config-option-textfield__select selectbox option:focus, .config-option-textfield__wrapper selectbox option:hover, .config-option-textfield__wrapper selectbox option:focus {
- background-color: rgba(255, 255, 255, 0.2);
-}
-.config-option-dropdown__select selectbox option:hover:not(:checked), .config-option-dropdown__wrapper selectbox option:hover:not(:checked), .config-option-textfield__select selectbox option:hover:not(:checked), .config-option-textfield__wrapper selectbox option:hover:not(:checked) {
- cursor: pointer;
-}
-.config-option-dropdown__select selectbox option:checked, .config-option-dropdown__wrapper selectbox option:checked, .config-option-textfield__select selectbox option:checked, .config-option-textfield__wrapper selectbox option:checked {
- background-color: rgba(255, 255, 255, 0.05);
- color: #FFFFFF;
-}
-
-.config-description {
- flex: 1 1 100%;
- width: auto;
- height: auto;
- padding: 16dp;
- border-radius: 0dp;
- border-bottom-right-radius: 16dp;
- border-bottom-left-radius: 16dp;
- background-color: rgba(0, 0, 0, 0.35);
- text-align: left;
-}
-.config-description__contents {
- padding: 16dp;
- line-height: 28dp;
- white-space: pre-line;
-}
-.config-description__contents b {
- color: #B97DF2;
-}
-.config-description__contents i {
- color: #E9CD35;
- font-style: normal;
-}
-
-.input-config {
- padding: 0;
-}
-
-.input-config__horizontal-split {
- display: flex;
- position: relative;
- flex-direction: row;
- height: 100%;
-}
-
-.input-config__mappings {
- display: block;
- flex: 1 1 auto;
- min-width: 640dp;
- height: 100%;
-}
-
-.input-config__mappings-scroll {
- display: block;
- width: 100%;
- max-height: 100%;
- overflow-y: auto;
-}
-
-.input-config__mappings-wrapper {
- padding: 8dp;
-}
-
-.input-config__visual-wrapper {
- display: block;
- flex: 1 1 100%;
- width: auto;
- max-width: 1040.4444444444dp;
- height: auto;
- max-height: 780.3333333333dp;
- margin: auto 0;
-}
-
-.input-config__visual-aspect {
- position: relative;
- width: 100%;
- margin: auto 0;
- padding-bottom: 75%;
- background-color: rgba(0, 0, 0, 0.35);
-}
-
-.input-config__visual {
- display: flex;
- position: absolute;
- top: 16dp;
- right: 16dp;
- bottom: 16dp;
- left: 16dp;
- flex-direction: column;
- border-radius: 108dp;
- background-color: rgba(255, 255, 255, 0.05);
-}
-
-.input-config__visual-half {
- display: flex;
- position: relative;
- flex: 1 1 100%;
- flex-direction: row;
- padding: 6%;
-}
-.input-config__visual-half--bottom {
- align-items: flex-end;
- justify-content: space-between;
-}
-
-.input-config__visual-quarter-left {
- display: flex;
- flex: 1 1 50%;
- align-items: flex-start;
- justify-content: flex-start;
- width: auto;
-}
-
-.input-config__visual-quarter-right {
- display: flex;
- flex: 1 1 100%;
- align-items: flex-start;
- justify-content: flex-end;
-}
-
-.input-config__visual-stick-wrapper {
- display: flex;
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- align-items: center;
- justify-content: center;
-}
-
-.input-viz {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
- display: flex;
- position: relative;
- align-items: center;
- justify-content: center;
-}
-.input-viz > svg:not(.input-viz__dpad-arrow) {
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
-}
-[cur-input=NONE] .input-viz[visual-input] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=A] {
- opacity: 0.25;
-}
-[cur-input=A] .input-viz[visual-input~=A] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=B] {
- opacity: 0.25;
-}
-[cur-input=B] .input-viz[visual-input~=B] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=Z] {
- opacity: 0.25;
-}
-[cur-input=Z] .input-viz[visual-input~=Z] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=START] {
- opacity: 0.25;
-}
-[cur-input=START] .input-viz[visual-input~=START] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=DPAD_UP] {
- opacity: 0.25;
-}
-[cur-input=DPAD_UP] .input-viz[visual-input~=DPAD_UP] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=DPAD_DOWN] {
- opacity: 0.25;
-}
-[cur-input=DPAD_DOWN] .input-viz[visual-input~=DPAD_DOWN] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=DPAD_LEFT] {
- opacity: 0.25;
-}
-[cur-input=DPAD_LEFT] .input-viz[visual-input~=DPAD_LEFT] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=DPAD_RIGHT] {
- opacity: 0.25;
-}
-[cur-input=DPAD_RIGHT] .input-viz[visual-input~=DPAD_RIGHT] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=L] {
- opacity: 0.25;
-}
-[cur-input=L] .input-viz[visual-input~=L] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=R] {
- opacity: 0.25;
-}
-[cur-input=R] .input-viz[visual-input~=R] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=C_UP] {
- opacity: 0.25;
-}
-[cur-input=C_UP] .input-viz[visual-input~=C_UP] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=C_DOWN] {
- opacity: 0.25;
-}
-[cur-input=C_DOWN] .input-viz[visual-input~=C_DOWN] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=C_LEFT] {
- opacity: 0.25;
-}
-[cur-input=C_LEFT] .input-viz[visual-input~=C_LEFT] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=C_RIGHT] {
- opacity: 0.25;
-}
-[cur-input=C_RIGHT] .input-viz[visual-input~=C_RIGHT] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=X_AXIS_NEG] {
- opacity: 0.25;
-}
-[cur-input=X_AXIS_NEG] .input-viz[visual-input~=X_AXIS_NEG] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=X_AXIS_POS] {
- opacity: 0.25;
-}
-[cur-input=X_AXIS_POS] .input-viz[visual-input~=X_AXIS_POS] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=Y_AXIS_NEG] {
- opacity: 0.25;
-}
-[cur-input=Y_AXIS_NEG] .input-viz[visual-input~=Y_AXIS_NEG] {
- opacity: 1;
-}
-
-.input-viz[visual-input~=Y_AXIS_POS] {
- opacity: 0.25;
-}
-[cur-input=Y_AXIS_POS] .input-viz[visual-input~=Y_AXIS_POS] {
- opacity: 1;
-}
-
-.input-viz__button {
- color: #F2F2F2;
-}
-.input-viz__button svg {
- image-color: #F2F2F2;
-}
-.input-viz__button--sm {
- width: 64dp;
- height: 64dp;
-}
-.input-viz__button--sm > svg {
- width: 64dp;
- height: 64dp;
-}
-.input-viz__button--md {
- width: 76dp;
- height: 76dp;
-}
-.input-viz__button--md > svg {
- width: 76dp;
- height: 76dp;
-}
-.input-viz__button--lg {
- width: 84dp;
- height: 84dp;
-}
-.input-viz__button--lg > svg {
- width: 84dp;
- height: 84dp;
-}
-.input-viz__button--C svg {
- image-color: #E9CD35;
-}
-.input-viz__button--A {
- margin-top: auto;
-}
-.input-viz__button--A svg {
- image-color: #3333FF;
-}
-.input-viz__button--B svg {
- image-color: #45D043;
-}
-.input-viz__button--Start svg {
- image-color: #F86039;
-}
-
-.input-viz__Z {
- width: 136dp;
- height: 136dp;
-}
-.input-viz__Z svg {
- image-color: #E9CD35;
-}
-.input-viz__Z > svg {
- width: 136dp;
- height: 136dp;
-}
-
-.input-viz.input-viz__dpad {
- width: 192dp;
- height: 192dp;
- position: relative;
-}
-.input-viz.input-viz__dpad svg {
- image-color: #F2F2F2;
-}
-.input-viz.input-viz__dpad > svg {
- width: 192dp;
- height: 192dp;
-}
-
-.input-config__visual-stick {
- display: flex;
- position: relative;
- align-items: center;
- justify-content: center;
- width: 200dp;
- height: 200dp;
- border-radius: 100dp;
- background-color: rgba(255, 255, 255, 0.05);
-}
-
-.input-viz__dpad-split,
-.input-viz__stick-split {
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- display: flex;
- width: 100%;
- height: 100%;
-}
-.input-viz__dpad-split--vertical,
-.input-viz__stick-split--vertical {
- flex-direction: column;
- align-items: center;
- justify-content: space-between;
-}
-.input-viz__dpad-split--horizontal,
-.input-viz__stick-split--horizontal {
- flex-direction: row;
- align-items: center;
- justify-content: space-between;
-}
-.input-viz__dpad-split > div,
-.input-viz__stick-split > div {
- display: flex;
- flex: 1 1 100%;
- flex-direction: row;
- align-items: center;
- justify-content: center;
-}
-
-.input-viz__dpad-split > div {
- width: 64dp;
- height: 64dp;
-}
-
-.input-viz__stick-split > div {
- width: 66.6666666667dp;
- height: 66.6666666667dp;
-}
-
-.input-viz__dpad-arrow {
- position: absolute;
- width: 60dp;
- height: 60dp;
-}
-.input-viz__dpad-arrow--up {
- top: 4dp;
- margin: 0 auto;
-}
-.input-viz__dpad-arrow--down {
- bottom: 4dp;
- margin: 0 auto;
- transform: rotate(180deg);
-}
-.input-viz__dpad-arrow--left {
- left: 4dp;
- margin: auto 0;
- transform: rotate(-90deg);
-}
-.input-viz__dpad-arrow--right {
- right: 4dp;
- margin: auto 0;
- transform: rotate(90deg);
-}
-
-.input-viz__R {
- width: 96dp;
- height: 96dp;
-}
-.input-viz__R svg {
- image-color: #FFFFFF;
-}
-.input-viz__R > svg {
- width: 96dp;
- height: 96dp;
-}
-
-.input-viz__L {
- width: 136dp;
- height: 136dp;
-}
-.input-viz__L svg {
- image-color: #17D6E8;
-}
-.input-viz__L > svg {
- width: 136dp;
- height: 136dp;
-}
-
-.input-config__c-buttons {
- position: relative;
- width: 208dp;
- height: 132dp;
-}
-.input-config__c-buttons-lr, .input-config__c-buttons-du {
- display: flex;
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
-}
-.input-config__c-buttons-lr {
- flex-direction: row;
- align-items: flex-start;
- justify-content: space-between;
-}
-.input-config__c-buttons-du {
- flex-direction: column-reverse;
- align-items: center;
- justify-content: space-between;
-}
-.input-config__c-buttons .input-viz[visual-input=C_UP] {
- margin-top: -32dp;
-}
-
-.input-config__main-buttons {
- display: flex;
- position: relative;
- flex-direction: row;
- justify-content: space-between;
- width: 268dp;
- min-width: 1dp;
- height: 128dp;
- margin-right: 10dp;
-}
-
-.button {
- border-color: rgba(185, 125, 242, 0.8);
- background-color: rgba(185, 125, 242, 0.05);
- color: #CCCCCC;
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
- display: block;
- width: auto;
- height: auto;
- padding: 23dp;
- border-width: 1.1dp;
- border-radius: 12dp;
-}
-.button:focus, .button:hover {
- border-color: #B97DF2;
- background-color: rgba(185, 125, 242, 0.3);
- color: #F2F2F2;
-}
-.button:disabled, .button[disabled] {
- color: rgba(255, 255, 255, 0.6);
-}
-.button:active {
- background-color: rgba(185, 125, 242, 0.2);
- color: rgb(244.6, 244.6, 244.6);
-}
-.button--primary {
- border-color: rgba(185, 125, 242, 0.8);
- background-color: rgba(185, 125, 242, 0.05);
- color: #CCCCCC;
-}
-.button--primary:focus, .button--primary:hover {
- border-color: #B97DF2;
- background-color: rgba(185, 125, 242, 0.3);
- color: #F2F2F2;
-}
-.button--primary:disabled, .button--primary[disabled] {
- color: rgba(255, 255, 255, 0.6);
-}
-.button--primary:active {
- background-color: rgba(185, 125, 242, 0.2);
- color: rgb(244.6, 244.6, 244.6);
-}
-.button--secondary {
- border-color: rgba(23, 214, 232, 0.8);
- background-color: rgba(23, 214, 232, 0.05);
- color: #CCCCCC;
-}
-.button--secondary:focus, .button--secondary:hover {
- border-color: #17D6E8;
- background-color: rgba(23, 214, 232, 0.3);
- color: #F2F2F2;
-}
-.button--secondary:disabled, .button--secondary[disabled] {
- color: rgba(255, 255, 255, 0.6);
-}
-.button--secondary:active {
- background-color: rgba(23, 214, 232, 0.2);
- color: rgb(244.6, 244.6, 244.6);
-}
-.button--tertiary {
- border-color: rgba(242, 242, 242, 0.8);
- background-color: rgba(242, 242, 242, 0.05);
- color: #CCCCCC;
-}
-.button--tertiary:focus, .button--tertiary:hover {
- border-color: #F2F2F2;
- background-color: rgba(242, 242, 242, 0.3);
- color: #F2F2F2;
-}
-.button--tertiary:disabled, .button--tertiary[disabled] {
- color: rgba(255, 255, 255, 0.6);
-}
-.button--tertiary:active {
- background-color: rgba(242, 242, 242, 0.2);
- color: rgb(244.6, 244.6, 244.6);
-}
-.button--success {
- border-color: rgba(69, 208, 67, 0.8);
- background-color: rgba(69, 208, 67, 0.05);
- color: #CCCCCC;
-}
-.button--success:focus, .button--success:hover {
- border-color: #45D043;
- background-color: rgba(69, 208, 67, 0.3);
- color: #F2F2F2;
-}
-.button--success:disabled, .button--success[disabled] {
- color: rgba(255, 255, 255, 0.6);
-}
-.button--success:active {
- background-color: rgba(69, 208, 67, 0.2);
- color: rgb(244.6, 244.6, 244.6);
-}
-.button--error {
- border-color: rgba(248, 96, 57, 0.8);
- background-color: rgba(248, 96, 57, 0.05);
- color: #CCCCCC;
-}
-.button--error:focus, .button--error:hover {
- border-color: #F86039;
- background-color: rgba(248, 96, 57, 0.3);
- color: #F2F2F2;
-}
-.button--error:disabled, .button--error[disabled] {
- color: rgba(255, 255, 255, 0.6);
-}
-.button--error:active {
- background-color: rgba(248, 96, 57, 0.2);
- color: rgb(244.6, 244.6, 244.6);
-}
-.button--warning {
- border-color: rgba(233, 205, 53, 0.8);
- background-color: rgba(233, 205, 53, 0.05);
- color: #CCCCCC;
-}
-.button--warning:focus, .button--warning:hover {
- border-color: #E9CD35;
- background-color: rgba(233, 205, 53, 0.3);
- color: #F2F2F2;
-}
-.button--warning:disabled, .button--warning[disabled] {
- color: rgba(255, 255, 255, 0.6);
-}
-.button--warning:active {
- background-color: rgba(233, 205, 53, 0.2);
- color: rgb(244.6, 244.6, 244.6);
-}
-.button:not([disabled]) {
- cursor: pointer;
-}
-.button:disabled, .button[disabled] {
- opacity: 0.5;
-}
-.button__label {
- width: auto;
- height: auto;
-}
-
-/*
-
-*/
-.icon-button {
- color: #CCCCCC;
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out, border-color 0.05s linear-in-out;
- display: flex;
- align-items: center;
- justify-content: center;
- width: 53.8dp;
- min-width: 53.8dp;
- max-width: 53.8dp;
- height: 53.8dp;
- min-height: 53.8dp;
- max-height: 53.8dp;
- border-width: 1.1dp;
- border-radius: 26.9dp;
- border-color: rgba(0, 0, 0, 0);
- background-color: rgba(0, 0, 0, 0);
-}
-.icon-button svg {
- image-color: #CCCCCC;
-}
-.icon-button svg {
- transition: image-color 0.05s linear-in-out, background-color 0.05s linear-in-out;
-}
-.icon-button:focus, .icon-button:hover {
- color: #F2F2F2;
- background-color: rgba(255, 255, 255, 0.2);
-}
-.icon-button:focus svg, .icon-button:hover svg {
- image-color: #F2F2F2;
-}
-.icon-button:active {
- color: rgb(244.6, 244.6, 244.6);
- background-color: rgba(255, 255, 255, 0.1);
-}
-.icon-button:active svg {
- image-color: rgb(244.6, 244.6, 244.6);
-}
-.icon-button:disabled, .icon-button[disabled] {
- color: #CCCCCC;
- opacity: 0.5;
-}
-.icon-button:disabled svg, .icon-button[disabled] svg {
- image-color: #CCCCCC;
-}
-.icon-button:not([disabled]) {
- cursor: pointer;
-}
-.icon-button svg {
- width: 32dp;
- height: 32dp;
-}
-.icon-button--primary {
- border-color: rgba(185, 125, 242, 0.8);
- background-color: rgba(185, 125, 242, 0.05);
-}
-.icon-button--primary:focus, .icon-button--primary:hover {
- border-color: #B97DF2;
- background-color: rgba(185, 125, 242, 0.3);
-}
-.icon-button--primary:active {
- background-color: rgba(185, 125, 242, 0.2);
-}
-.icon-button--secondary {
- border-color: rgba(23, 214, 232, 0.8);
- background-color: rgba(23, 214, 232, 0.05);
-}
-.icon-button--secondary:focus, .icon-button--secondary:hover {
- border-color: #17D6E8;
- background-color: rgba(23, 214, 232, 0.3);
-}
-.icon-button--secondary:active {
- background-color: rgba(23, 214, 232, 0.2);
-}
-.icon-button--tertiary {
- border-color: rgba(242, 242, 242, 0.8);
- background-color: rgba(242, 242, 242, 0.05);
-}
-.icon-button--tertiary:focus, .icon-button--tertiary:hover {
- border-color: #F2F2F2;
- background-color: rgba(242, 242, 242, 0.3);
-}
-.icon-button--tertiary:active {
- background-color: rgba(242, 242, 242, 0.2);
-}
-.icon-button--success {
- border-color: rgba(69, 208, 67, 0.8);
- background-color: rgba(69, 208, 67, 0.05);
-}
-.icon-button--success:focus, .icon-button--success:hover {
- border-color: #45D043;
- background-color: rgba(69, 208, 67, 0.3);
-}
-.icon-button--success:active {
- background-color: rgba(69, 208, 67, 0.2);
-}
-.icon-button--error {
- border-color: rgba(248, 96, 57, 0.8);
- background-color: rgba(248, 96, 57, 0.05);
-}
-.icon-button--error:focus, .icon-button--error:hover {
- border-color: #F86039;
- background-color: rgba(248, 96, 57, 0.3);
-}
-.icon-button--error:active {
- background-color: rgba(248, 96, 57, 0.2);
-}
-.icon-button--warning {
- border-color: rgba(233, 205, 53, 0.8);
- background-color: rgba(233, 205, 53, 0.05);
-}
-.icon-button--warning:focus, .icon-button--warning:hover {
- border-color: #E9CD35;
- background-color: rgba(233, 205, 53, 0.3);
-}
-.icon-button--warning:active {
- background-color: rgba(233, 205, 53, 0.2);
-}
-
-.launcher {
- display: block;
- position: relative;
- flex-direction: row;
- justify-content: space-between;
- width: 100%;
- height: 100%;
- background-color: #08070D;
-}
-
-.launcher__vertical-split {
- display: flex;
- position: absolute;
- top: 0;
- right: 50%;
- bottom: 0;
- left: 0;
- flex-direction: column;
- align-items: flex-start;
- justify-content: space-between;
-}
-.launcher__vertical-split--right {
- right: 0;
- left: 50%;
- align-items: flex-end;
-}
-
-@keyframes slide-mm-bg-over {
- 0% {
- transform: translateX(100dp);
- }
- 100% {
- transform: translateX(0dp);
- }
-}
-.launcher__background-wrapper {
- display: flex;
- position: absolute;
- top: -55vw;
- right: -100%;
- bottom: -50vw;
- left: -70vw;
- align-items: center;
- justify-content: flex-start;
- transform: translateX(0dp);
- animation: 25s cubic-out 1 slide-mm-bg-over;
-}
-
-@keyframes fade-mm-in {
- 0% {
- opacity: 0;
- }
- 100% {
- opacity: 0.1;
- }
-}
-.launcher__background-mm {
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- width: auto;
- height: 100%;
- animation: 2.5s cubic-in-out 1 fade-mm-in;
- opacity: 0.1;
-}
-
-.launcher__title-quadrant {
- flex: 1 1 auto;
- width: auto;
- height: auto;
- padding-top: 96dp;
- padding-left: 96dp;
-}
-.launcher__title-quadrant--right {
- padding-right: 96dp;
- padding-left: 0;
-}
-
-.launcher__content-quadrant {
- display: flex;
- position: relative;
- flex: 1 1 100%;
- flex-direction: column;
- align-items: flex-start;
- justify-content: flex-end;
- width: 100%;
- height: auto;
- padding: 32dp;
-}
-
-/*
- Example layout:
-
- - Variants:
- .menu-list-item--right (align to right side)
- - Optional:
- -
Coming Soon™
-
-*/
-.menu-list-item {
- color: #CCCCCC;
- display: flex;
- flex-direction: row;
- align-items: center;
- width: 100%;
- height: auto;
- padding: 16dp;
- border-radius: 8dp;
- background-color: rgba(0, 0, 0, 0);
- cursor: pointer;
-}
-.menu-list-item svg {
- image-color: #CCCCCC;
-}
-.menu-list-item--right {
- flex-direction: row-reverse;
- align-content: flex-end;
-}
-.menu-list-item--right .menu-list-item__bullet {
- margin-left: 12dp;
- opacity: 1;
-}
-.menu-list-item--right.menu-list-item:focus:not(:disabled, [disabled]), .menu-list-item--right.menu-list-item:hover:not(:disabled, [disabled]) {
- decorator: horizontal-gradient(#7A2AC600 #DABAF714);
-}
-.menu-list-item:focus:not(:disabled, [disabled]), .menu-list-item:hover:not(:disabled, [disabled]) {
- color: #B97DF2;
- decorator: horizontal-gradient(#7A2AC614 #DABAF700);
-}
-.menu-list-item:focus:not(:disabled, [disabled]) svg, .menu-list-item:hover:not(:disabled, [disabled]) svg {
- image-color: #B97DF2;
-}
-.menu-list-item:focus:not(:disabled, [disabled]) .menu-list-item__bullet, .menu-list-item:hover:not(:disabled, [disabled]) .menu-list-item__bullet {
- opacity: 1;
-}
-.menu-list-item:disabled, .menu-list-item[disabled] {
- opacity: 0.5;
- tab-index: none;
- cursor: default;
-}
-
-.menu-list-item__bullet {
- margin-right: 12dp;
- opacity: 0;
-}
-
-/*
- Example layout:
-
-
- - Variants:
- .subtitle-title--right (align to right side)
- - Optional:
- - Coming Soon™
-
-*/
-.subtitle-title {
- display: block;
- position: relative;
- flex-direction: column;
- align-content: flex-start;
- align-items: flex-start;
- width: auto;
- height: auto;
- padding: 0;
- background-color: rgba(0, 0, 0, 0);
- color: #CCCCCC;
- text-align: left;
- cursor: pointer;
-}
-.subtitle-title--right {
- align-content: flex-end;
-}
-.subtitle-title--right, .subtitle-title--right > * {
- text-align: right;
-}
-.subtitle-title[selected] {
- color: #F2F2F2;
- cursor: default;
-}
-.subtitle-title:focus:not(:disabled, [disabled]), .subtitle-title:hover:not(:disabled, [disabled], [selected]) {
- color: #B97DF2;
-}
-.subtitle-title:disabled, .subtitle-title[disabled] {
- opacity: 0.5;
- cursor: default;
- tab-index: none;
-}
-.subtitle-title h3 {
- margin-bottom: 6dp;
-}
-.subtitle-title h1 {
- margin-top: 6dp;
-}
-.subtitle-title__disclaimer {
- margin-top: 16dp;
-}
-
-.toggle {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
- display: flex;
- position: relative;
- flex-direction: row;
- align-items: center;
- justify-content: space-between;
- width: 162dp;
- height: 72dp;
- border-radius: 36dp;
- opacity: 0.9;
- background: rgba(0, 0, 0, 0);
- cursor: pointer;
-}
-.toggle:hover, .toggle:focus-visible, .toggle:focus {
- opacity: 1;
- background-color: rgba(23, 214, 232, 0.3);
-}
-.toggle:active {
- opacity: 1;
- background-color: rgba(23, 214, 232, 0.05);
-}
-.toggle .toggle__border {
- position: absolute;
- top: 1.1dp;
- right: 1.1dp;
- bottom: 1.1dp;
- left: 1.1dp;
- border-width: 1.1dp;
- border-color: #A2EFF6;
- display: block;
- border-radius: 36dp;
-}
-.toggle .toggle__floater {
- position: absolute;
- top: 50%;
- left: 4dp;
- width: 80dp;
- height: 64dp;
- transform: translateY(-50%);
- border-radius: 32dp;
- background: #25A1AD;
-}
-.toggle--checked .toggle__floater {
- left: 78dp;
-}
-.toggle--checked .toggle__icon.toggle__icon--left {
- opacity: 0.9;
- color: #A2EFF6;
-}
-.toggle--checked .toggle__icon.toggle__icon--right {
- opacity: 1;
- color: #F2F2F2;
-}
-
-.toggle__icons {
- display: flex;
- position: absolute;
- top: 50%;
- right: 16dp;
- left: 16dp;
- align-items: center;
- justify-content: space-between;
- height: 56dp;
- transform: translateY(-50%);
-}
-
-.toggle__icon {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
- display: flex;
- align-items: center;
- justify-content: center;
- width: 56dp;
- height: 56dp;
- color: #F2F2F2;
-}
-.toggle__icon--right {
- opacity: 1;
- color: #A2EFF6;
-}
-
-.bottom-left {
- display: flex;
- position: absolute;
- bottom: 4dp;
- flex-direction: row;
- align-items: flex-start;
- justify-content: flex-start;
- width: 100%;
- max-width: 1692.4444444444dp;
- height: auto;
- margin: 0 4dp;
-}
-
-.prompt__overlay {
- background-color: rgba(190, 184, 219, 0.1);
- pointer-events: auto;
-}
-.prompt__overlay, .prompt__content-wrapper {
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
-}
-.prompt__content-wrapper {
- display: flex;
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- align-items: center;
- justify-content: center;
-}
-.prompt__content {
- display: flex;
- position: relative;
- flex: 1 1 100%;
- flex-direction: column;
- width: 100%;
- max-width: 700dp;
- height: auto;
- margin: auto;
- border-width: 1.1dp;
- border-radius: 16dp;
- border-color: rgba(255, 255, 255, 0.2);
- background: rgba(8, 7, 13, 0.9);
-}
-.prompt__content h3, .prompt__content p {
- margin: 24dp;
-}
-.prompt__content p {
- margin-top: 0;
-}
-.prompt__controls {
- display: flex;
- flex-direction: row;
- justify-content: center;
- padding: 24dp 12dp;
- border-top-width: 1.1dp;
- border-top-color: rgba(255, 255, 255, 0.1);
-}
-.prompt__controls .button {
- min-width: 233.3333333333dp;
- margin: 0 12dp;
- text-align: center;
- nav-up: none;
- nav-down: none;
-}
-
-.config-debug {
- display: block;
- position: relative;
- width: 100%;
- max-height: 100%;
- padding: 8dp;
-}
-
-.config-debug__scroll {
- display: block;
- position: relative;
- width: 100%;
- max-height: 100%;
- overflow-y: auto;
-}
-
-.config-debug-option {
- color: #CCCCCC;
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
- border-bottom-width: 1.1dp;
- border-bottom-color: rgba(255, 255, 255, 0.1);
- display: block;
- position: relative;
- flex-direction: column;
- width: 100%;
- height: auto;
- padding: 12dp 4dp;
- background-color: rgba(0, 0, 0, 0);
-}
-.config-debug-option svg {
- image-color: #CCCCCC;
-}
-.config-debug-option svg {
- transition: image-color 0.05s linear-in-out, background-color 0.05s linear-in-out;
-}
-.config-debug-option:focus:not(:disabled, [disabled]), .config-debug-option:focus-visible:not(:disabled, [disabled]), .config-debug-option:hover:not(:disabled, [disabled]) {
- color: #F2F2F2;
- background-color: rgba(190, 184, 219, 0.1);
-}
-.config-debug-option:focus:not(:disabled, [disabled]) svg, .config-debug-option:focus-visible:not(:disabled, [disabled]) svg, .config-debug-option:hover:not(:disabled, [disabled]) svg {
- image-color: #F2F2F2;
-}
-.config-debug-option:disabled, .config-debug-option[disabled] {
- opacity: 0.5;
-}
-.config-debug-option .icon-button {
- margin-left: 8dp;
-}
-
-.config-debug__option-split {
- display: flex;
- flex-direction: row;
- align-items: center;
- justify-content: space-between;
-}
-
-.config-debug-option__label {
- display: flex;
- flex-direction: row;
- align-items: center;
- justify-content: flex-start;
- padding: 4dp 16dp 12dp;
- width: auto;
- height: auto;
- white-space: nowrap;
-}
-
-.config-debug__option-controls {
- display: block;
- position: relative;
- flex: 1 1 auto;
- height: auto;
- width: auto;
- max-width: 800dp;
- padding: 0 12dp;
-}
-
-.config-debug__option-trigger {
- flex: 1 1 auto;
-}
-
-.config-debug__select-wrapper {
- display: flex;
- position: relative;
- flex-direction: row;
- align-items: center;
- justify-content: flex-start;
- flex: 1 1 100%;
- width: auto;
- max-width: 800dp;
- height: auto;
- padding: 4dp;
-}
-.config-debug__select-wrapper .config-debug__select-label {
- padding-right: 16dp;
- flex: auto;
- width: 196dp;
-}
-.config-debug__select-wrapper .config-debug__select-label > div {
- display: inline;
- width: auto;
- height: auto;
-}
-.config-debug__select-wrapper input {
- display: block;
- position: relative;
- box-sizing: border-box;
- padding: 0;
- flex: 1 1 100%;
- width: auto;
- height: 20dp;
- margin: auto 0;
-}
-.config-debug__select-wrapper select {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out, border-color 0.05s linear-in-out;
- border-width: 1.1dp;
- border-color: rgba(255, 255, 255, 0.5);
- display: block;
- position: relative;
- box-sizing: border-box;
- padding: 0;
- flex: 1 1 100%;
- width: auto;
- height: 48dp;
- border-radius: 12dp;
- background-color: rgba(255, 255, 255, 0.05);
- cursor: pointer;
- align-items: center;
- justify-content: flex-start;
- padding: 14dp;
-}
-.config-debug__select-wrapper select svg {
- transition: image-color 0.05s linear-in-out, background-color 0.05s linear-in-out;
-}
-.config-debug__select-wrapper select:hover, .config-debug__select-wrapper select:focus {
- border-width: 1.1dp;
- border-color: rgba(255, 255, 255, 0.8);
- background-color: rgba(255, 255, 255, 0.2);
-}
-.config-debug__select-wrapper select selectvalue {
- display: inline;
- margin: auto 0;
- height: auto;
-}
-.config-debug__select-wrapper select selectbox {
- border-width: 1.1dp;
- border-color: rgba(255, 255, 255, 0.8);
- background-color: #191622;
- padding: 4dp 0;
- margin-top: 2dp;
- border-radius: 12dp;
-}
-.config-debug__select-wrapper select selectbox option {
- transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
- padding: 8dp 12dp;
- background-color: rgba(0, 0, 0, 0);
- color: #CCCCCC;
- font-weight: 400;
-}
-.config-debug__select-wrapper select selectbox option:hover, .config-debug__select-wrapper select selectbox option:focus {
- background-color: rgba(255, 255, 255, 0.2);
-}
-.config-debug__select-wrapper select selectbox option:hover:not(:checked) {
- cursor: pointer;
-}
-.config-debug__select-wrapper select selectbox option:checked {
- color: #FFFFFF;
- background-color: rgba(255, 255, 255, 0.05);
-}
-
-body {
- box-sizing: border-box;
- color: #F2F2F2;
- font-family: chiaro;
-}
-
-.rmlui-window {
- opacity: 1;
-}
-.rmlui-window--hidden {
- opacity: 0;
-}
-.rmlui-window:not([mouse-active]) {
- pointer-events: none;
-}
-
-*, *:before, *:after {
- box-sizing: border-box;
-}
-
-button {
- background-color: #7A2AC6;
-}
-
-@keyframes blue-pulse {
- 0% {
- color: #17D6E8;
- }
- 50% {
- color: #A2EFF6;
- }
- 100% {
- color: #17D6E8;
- }
-}
-@keyframes blue-pulse-with-border {
- 0% {
- border-color: #17D6E8;
- color: #17D6E8;
- }
- 50% {
- border-color: #A2EFF6;
- color: #A2EFF6;
- }
- 100% {
- border-color: #17D6E8;
- color: #17D6E8;
- }
-}
-@keyframes blue-pulse-background {
- 0% {
- background-color: #17D6E8;
- }
- 50% {
- background-color: #A2EFF6;
- }
- 100% {
- background-color: #17D6E8;
- }
-}
+.rml-needs-something-in-this-file {}
diff --git a/lib/RecompFrontend b/lib/RecompFrontend
index b1a1477..b2c5c18 160000
--- a/lib/RecompFrontend
+++ b/lib/RecompFrontend
@@ -1 +1 @@
-Subproject commit b1a1477c6556aeb7ed45defbfb5924f721efebc1
+Subproject commit b2c5c18d73054416c844486611fd2c2b9d8a4927
diff --git a/src/main/launcher.cpp b/src/main/launcher.cpp
index c9592b1..04f616a 100644
--- a/src/main/launcher.cpp
+++ b/src/main/launcher.cpp
@@ -1,6 +1,7 @@
#include "recompui/recompui.h"
#include "zelda_game.h"
#include "zelda_launcher.h"
+#include "hlsl++.h"
// UI Components
namespace {
@@ -127,6 +128,7 @@ namespace {
Element *root;
Element *title_wrapper;
Element *content_wrapper;
+ GameOptionsMenu *game_options_menu;
SubtitleTitleButton *title_button;
zelda64::Game game;
std::string name;
@@ -197,6 +199,116 @@ namespace {
}
}
+ struct GameOptionExtraData {
+ Element *bullet = nullptr;
+ float anim_progress = 0;
+ float anim_goal = 0;
+ };
+
+ std::vector game_option_data;
+
+ bool handle_game_option_event(int index, const Event& e) {
+ GameOption *option = game_options_menu->get_options()[index];
+ GameOptionExtraData &data = game_option_data[index];
+ switch (e.type) {
+ case EventType::Click:
+ break;
+ case EventType::Hover:
+ {
+ bool hovering = std::get(e.variant).active && option->is_enabled();
+ if (hovering) {
+ data.anim_goal = 1.0f;
+ } else {
+ data.anim_goal = 0.0f;
+ }
+ option->queue_update();
+ break;
+ }
+ case EventType::Enable:
+ break;
+ case EventType::Focus: {
+ bool active = std::get(e.variant).active;
+ if (active) {
+ data.anim_goal = 1.0f;
+ } else {
+ data.anim_goal = 0.0f;
+ }
+ option->queue_update();
+
+ break;
+ }
+ case EventType::Update:
+ if (data.anim_goal != data.anim_progress) {
+ float sign = (data.anim_goal > data.anim_progress) ? 1.0f : -1.0f;
+ float diff1 = fabsf(data.anim_goal - data.anim_progress);
+ float change_rate = std::max(0.02f, diff1 * 0.08f);
+
+ data.anim_progress += change_rate * sign;
+ data.anim_progress = std::clamp(data.anim_progress, 0.0f, 1.0f);
+ float diff = fabsf(data.anim_goal - data.anim_progress);
+ if (diff < 0.01f) {
+ data.anim_progress = data.anim_goal;
+ }
+ float smooth_val = hlslpp::smoothstep(hlslpp::float1(0.0f), 1.0f, data.anim_progress);
+ data.bullet->set_opacity(smooth_val);
+ data.bullet->set_translate_2D((1.0f - smooth_val) * (right ? 50.0f : -50.0f), -50.0f, Unit::Percent);
+ int opa = static_cast(40.0f * smooth_val);
+ option->set_decorator_horizontal_gradient(
+ theme::color::PrimaryL,
+ theme::color::PrimaryL,
+ right ? 0 : opa,
+ right ? opa : 0
+ );
+
+ option->queue_update();
+ }
+ break;
+ default:
+ assert(false && "Unknown event type.");
+ break;
+ }
+
+ return false;
+ }
+
+ void style_game_options() {
+ std::vector &options = game_options_menu->get_options();
+ auto context = get_current_context();
+
+ size_t num_options = options.size();
+ game_option_data.clear();
+ game_option_data.resize(num_options);
+
+ for (size_t i = 0; i < num_options; i++) {
+ options[i]->set_position(Position::Relative);
+ if (right) {
+ options[i]->set_padding_right(44);
+ } else {
+ options[i]->set_padding_left(44);
+ }
+ options[i]->set_background_color(theme::color::Transparent);
+ options[i]->hover_style.set_background_color(theme::color::Transparent);
+ options[i]->focus_style.set_background_color(theme::color::Transparent);
+ options[i]->set_decorator_horizontal_gradient(theme::color::PrimaryL, theme::color::PrimaryL, 0, 0);
+ options[i]->set_event_callback([this, i](const Event& e) {
+ return handle_game_option_event(i, e);
+ });
+
+ game_option_data[i].bullet = context.create_element